Java SWT树项目高度

Java SWT树项目高度,java,eclipse,swt,Java,Eclipse,Swt,有可能有一棵具有不同高度线条的SWT树吗 Manuel当然,您可以在所讨论的TreeItem上调用setFont(),并为其指定比其他TreeItem行使用的字体更大的字体。然而,这可能不是你想要的。。。在树中有多种字体大小 第二个更为老练的替代方法可能是在TreeItem上使用setImage()方法。。。为每一行设置白色(或其他)背景图像,高行使用比短行更大的图像 第二种方法将在不更改字体的情况下为您提供自定义行高,尽管您希望确保选择与系统默认背景色相同颜色的背景图像。也许您甚至可以在内存中

有可能有一棵具有不同高度线条的SWT树吗


Manuel

当然,您可以在所讨论的
TreeItem
上调用
setFont()
,并为其指定比其他
TreeItem
行使用的字体更大的字体。然而,这可能不是你想要的。。。在
树中有多种字体大小

第二个更为老练的替代方法可能是在
TreeItem
上使用
setImage()
方法。。。为每一行设置白色(或其他)背景图像,高行使用比短行更大的图像


第二种方法将在不更改字体的情况下为您提供自定义行高,尽管您希望确保选择与系统默认背景色相同颜色的背景图像。也许您甚至可以在内存中以编程方式创建
图像
对象来确保这一点。

在SWT树或表格中,项目不能有不同的高度。如果需要使每一行具有不同的高度,则必须使用自定义小部件,如或例如。

至少在使用GTK的Linux下,以下情况会使第一个树项比另一个树项大:

tree.addListener(SWT.MeasureItem, new Listener() {
    boolean first = true;

    public void handleEvent(Event event) {
        if (event.item instanceof TreeItem) {
            if (first) {
                event.height = event.height * 3;
                first = false;
            }
        }
    }
});

但是一个树项目似乎有一个最小的大小,所以如果你试图设置的较小,则没有效果。

图像黑客是一个好主意。它有用吗?我记得不久前曾试图实现类似的目标,但从未找到一个能够跨所有平台工作的解决方案。这是一种可能无法在所有SWT实现上都很好地工作的黑客行为,因此请确保仔细测试它。此解决方案是否真的为每一行提供了不同的高度?今天,我尝试了另一种解决方案:它可以工作,但将所有行设置为最高高度。为什么这在使用不同大小的图像时会有所不同?它在macOS(10.13)上不起作用,我只是尝试了一下。所有行都会相应地进行调整。我认为操作系统的限制可能是像OmniOutliner这样的应用程序有自己的树实现的原因。这是写在API参考中的吗?除了你的评论之外,我找不到任何关于这个的信息。@SimonPA,我认为这是不可能的,因为操作系统的表不允许这样做。