【发布时间】:2010-11-02 21:04:16
【问题描述】:
问题:我需要一个具有可变行高的 SWT 表 (JFace TableViewer)。事实上,我在我的开发机器(运行 Ubuntu 10.10)上解决了这个问题。不幸的是,这在 Windows 和 Mac 上都不起作用。
最初,我以为我没有正确使用这些库。但是现在我担心我想做的事情在 Windows 上根本不可能。我希望这里有人能说服我。
重现:我没有在此处提供我的代码,而是构建了一个最小的程序来重现该问题。我从以下 Snipplet 开始:
我修改了 update() 方法,为目录生成两行文本,为文件生成一行(以模拟具有可变行高的环境):
... if (file.isDirectory()) { cell.setText(styledString.toString() + "\n" + styledString.toString()); cell.setImage(IMAGE1); } 别的 { cell.setImage(IMAGE2); } ...这在 Linux 上按预期工作,但在 Windows 上,所有行都具有相同的高度。具体来说,只有一条线是可见的。
接下来,我试图通过让 measure() 更智能来帮助 SWT。所以我像这样重写了 measure() :
受保护的无效措施(事件事件,对象元素){
if (((文件)元素).isDirectory()) {
事件.高度 = 32;
} 别的 {
事件.高度 = 16;
}
超级测量(事件,元素);
}
结果:所有行的高度均为 32。同样,这在 Linux 上按预期工作。
我担心的是,在 Windows 上,所有行的高度都必须相同。这对我来说将是一个炫耀。任何人都可以确认这一点,或者更好地提供解决方法吗?
谢谢!
【问题讨论】:
-
实际上,我可能已经找到了对此行为的解释,甚至可能找到了解决方法(我仍然需要尝试一下):bugs.eclipse.org/bugs/show_bug.cgi?id=148039
-
感谢大家的回答。我最终使用了 sourceforge.net/projects/agilegrid ,它也像 KTable 一样在本地绘制表格。与 SWT 相比,与它一起工作很愉快。