繁体   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