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