2012-06-05 6 views
5

최상위 수준에 아이콘이 있지만 다음 수준에는없는 SWT 트리를 작성하려고합니다.SWT TreeItem 이미지 들여 쓰기 제거

Tree Screenshot

내가 사용하지 않는 이미지의 왼쪽 된 것으로 보이는 빈 공간을 피할 수있는 방법이 있습니까? 다음 코드 스 니펫을 사용하여 시도했지만 어느 것도 원하는대로하지 못했습니다.

SWT.MeasureItem :

tree.addListener(SWT.MeasureItem, new Listener() 
{ 
    @Override 
    public void handleEvent(Event event) 
    { 
    TreeItem item = (TreeItem)event.item; 
    Image image = item.getImage(); 
    if (image == null) 
    { 
     event.x -= 40; 
    } 
    } 
}); 

SWT.PaintItem : 난 그냥 텍스트가 왼쪽으로 조금 더를 그려 질 수 있다는 기대했다 두 경우 모두

tree.addListener(SWT.PaintItem, new Listener() 
{ 
    @Override 
    public void handleEvent(Event event) { 
    TreeItem item = (TreeItem)event.item; 
    Image image = item.getImage(); 
    if (image == null) 
    { 
     event.x -= 40; 
    } 
    } 
}); 

.

답변

1

나는 더 많은 조사를 직접했습니다. 유진 (Eugene)의 대답에 따르면, 이것은 본래의 행동으로 보인다. 주의 할 점이 몇 가지 있습니다.

트리의 항목에 아이콘이 없으면 아이콘에 공백이 없습니다. 그러나 아이콘이있는 단일 항목 일지라도 모든 항목은 아이콘을위한 공간을 남겨 둡니다. 다음과 같이

해키 솔루션은 구현되지 않을 수 있습니다

  • 사용에 아이콘을 기본 컨트롤을 사용하면 예를 들어, 텍스트에 아이콘 접두사에게 약간의 공간을 원하는 항목에 대한 아이콘 공간
  • 잎되지 않도록 ""+ 텍스트
  • 난 그냥하기로 결정했습니다, 그래서

이 아마 플랫폼에서 시스템 글꼴에 걸쳐 잘 작동하지 않습니다 텍스트 왼쪽 공간에 원하는 아이콘을 그리는 PaintItem 리스너를 추가 아이콘을 가지고 살아라.

2

이 동작은 네이티브 컨트롤에서 비롯된 것이며 OS마다 다릅니다 (AFAIR, Mac에서는이 문제가 표시되지 않음). 아아, 쉽게 고칠 수는 없지만 일부 일반 아이콘을 추가하거나 전혀 아이콘을 추가하지 않습니다.