【问题标题】:Remove SWT TreeItem image indent删除 SWT TreeItem 图像缩进
【发布时间】:2012-06-05 23:03:24
【问题描述】:

我正在尝试构建一个 SWT 树,它在顶层有图标,但在下一层没有。

有什么办法可以避免我没有使用的图像似乎留有空白空间?我尝试使用以下代码 sn-ps,但都没有达到我想要的效果。

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

在这两种情况下,我只是希望文本可以再向左一点。

【问题讨论】:

    标签: java eclipse swt


    【解决方案1】:

    此行为来自本机控件并且是特定于操作系统的(AFAIR,在 Mac 上您不会看到此问题)。唉,没有简单的解决方法,但添加一些通用图标(或根本不添加图标)。

    【讨论】:

      【解决方案2】:

      我自己也做了一些调查。根据尤金的回答,这似乎是原生行为。有几点值得注意。

      如果树中没有任何项目有图标,则没有为图标留下空间。但是,即使是带有图标的单个项目也会导致所有项目都为图标留出空间。

      一个hacky解决方案可以如下实现:

      • 不使用图标,以便本机控件不留图标空间
      • 对于需要在文本前加上一些空格的图标的项目,例如" " + 文字
      • 添加一个 PaintItem 侦听器,将您想要的图标绘制到文本留下的空间中

      这可能不适用于跨平台和跨系统字体,所以我决定接受图标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        相关资源
        最近更新 更多