SWT:包含跨列的单元格的表

时间:2012-07-10 12:04:01

标签: java ubuntu swt

在具有基于SWT的GUI的Java桌面应用程序中,我们有一个表,其中某些行必须跨越多个列。这是通过此官方SWT代码段中显示的方法解决的:Snippet239.java

然而,很久以后发现这种方法在Ubuntu上存在一个主要问题,默认的Ambiance / Radiance主题:列之间总是有垂直线,即使是跨越多列的单元格也是如此。这将在以下屏幕截图中显示:

Ubuntu with Ambiance/Radiance theme

Ubuntu with Clearlooks theme

正如您所看到的,在第一个屏幕截图中,第1列和第2列之间有一条垂直线。是否有人知道如何摆脱这些线?

我们已经尝试过以下方法:

  • Table.setLinesVisible(false):不起作用,垂直线不会消失。
  • 使用基于所有者绘制的标签提供程序绘制这些垂直线:不起作用,垂直线似乎绘制在标签提供者绘制的所有内容之上。
  • 将绘图侦听器附加到表以绘制垂直线:不起作用,因为每当滚动或以其他方式更新表时都会有很多毛刺。
  • Nebula project有一个Grid小部件,其中单元格可以跨越多列,并且垂直线没有问题,因为整个表都是非本地绘制的。但是,我们无法证明用Grid小部件替换我们的表只是为了修复具有特定主题的特定平台上的垂直线问题。此外,Grid小部件似乎是预发布的alpha版本。

基于我们已经尝试过的事情,我认为剩下的唯一方法就是在特定于平台的SWT内部进行处理,但我甚至不知道从哪里开始这样的事情。

1 个答案:

答案 0 :(得分:0)

我们使用Table和一个模拟多列的所有者绘制列来解决此问题。