簡體   English   中英

刪除SWT TreeItem圖像縮進

[英]Remove SWT TreeItem image indent

我正在嘗試構建一個SWT樹,它在頂層有圖標但在下一層沒有。

樹截圖

有沒有辦法避免似乎留給我不使用的圖像的空白區域? 我嘗試使用以下代碼片段,但沒有做我想要的。

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;
    }
  }
});

在這兩種情況下,我只是希望文本可以在左側進一步繪制。

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

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

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

hacky解決方案可以實現如下:

  • 不使用圖標,以便本機控件不會留下任何圖標空間
  • 對於您想要圖標前綴的項目,文本中有一些空格,例如“”+文本
  • 添加一個PaintItem偵聽器,將所需的圖標繪制到文本留下的空間中

這可能不適用於跨平台和跨系統字體,所以我決定忍受有圖標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM