问题:我需要一个具有可变行高的SWT表(JFace TableViewer).事实上,我在我的开发机器(运行Ubuntu 10.10)上解决了这个问题.不幸的是,这在Windows和Mac上都不起作用.
最初,我以为我没有正确使用这些库.但到现在为止,我担心我想要做的事情在Windows上根本不可能.我希望有人能说服我.
重现:我没有在这里提供我的代码,而是构建了一个简单的程序来重现问题.我从以下Snipplet开始:
我修改了update()方法,为目录生成两行文本,为文件生成一行(模拟具有可变行高的环境):
...
if (file.isDirectory()) {
cell.setText(styledString.toString() + "\n"
+ styledString.toString());
cell.setImage(IMAGE1);
} else {
cell.setImage(IMAGE2);
}
...
这在Linux上可以正常工作,但在Windows上,所有行都具有相同的高度.具体来说,只能看到一行.
接下来,我试图通过使measure()更加智能来帮助SWT.所以我重写了measure(),如下所示:
protected void measure(Event event, Object element) {
if (((File) element).isDirectory()) {
event.height = 32;
} else {
event.height = 16;
}
super.measure(event, element);
}
结果:所有行都具有高度32.再次,这在Linux上按预期工作.
我担心,在Windows上,所有行都必须是相同的高度.这对我来说是一个显而易见的事.任何人都可以证实这一点,甚至更好,提供一种解决方法吗?
谢谢!
| 归档时间: |
|
| 查看次数: |
4746 次 |
| 最近记录: |