Java 删除SWT TreeItem图像缩进
我正在尝试构建一个SWT树,它在顶层有图标,但在下一层没有 有没有办法避免空白的空间,好像我没有用的图像?我尝试使用以下代码段,但都没有达到我的目的 SWT.MeasureItem:Java 删除SWT TreeItem图像缩进,java,eclipse,swt,Java,Eclipse,Swt,我正在尝试构建一个SWT树,它在顶层有图标,但在下一层没有 有没有办法避免空白的空间,好像我没有用的图像?我尝试使用以下代码段,但都没有达到我的目的 SWT.MeasureItem: tree.addListener(SWT.MeasureItem, new Listener() { @Override public void handleEvent(Event event) { TreeItem item = (TreeItem)event.item; Image
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上,您不会看到此问题)。唉,除了添加一些通用图标(或者根本不添加图标),没有简单的解决办法。我自己也做了一些调查。根据尤金的回答,这似乎是天生的行为。有几件事值得注意 如果树中没有任何项目具有图标,则不会为图标留出空间。但是,即使是带有图标的单个项目也会导致所有项目为图标留出空间 黑客解决方案可以实现如下:
- 不使用图标,以便本机控件不留图标空间
- 对于需要在文本前添加图标前缀的项目,例如“+”文本
- 添加一个PaintItem侦听器,用于将所需图标绘制到文本留下的空间中