2012-06-05 49 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

我自己做了一些更多的調查。根據尤金的回答,這似乎是本土行爲。有一些值得注意的事情。

如果樹中的任何項目都沒有圖標,則不會留下圖標空間。但是,即使是帶有圖標的單個項目也會導致所有項目留出圖標空間。使本機控制葉無圖標空間

  • 對於您想要一個標誌性的前綴一些空間的文字如項目

    • 使用沒有圖標:

      哈克解決方案可以實現如下「」 +文字

    • 添加PaintItem偵聽吸引你想要的圖標到由文本留下的空間

    這可能不能很好地跨平臺和跨系統的字體,所以我剛剛決定工作住有圖標。

  • 2

    此行爲來自本機控件,並且是操作系統特定的(AFAIR,在Mac上您不會看到此問題)。唉,不容易修復,但添加一些通用圖標(或根本不添加圖標)。