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

pyt*_*ude 8 java ubuntu swt

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

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

Ubuntu采用Ambiance/Radiance主题

Ubuntu与Clearlooks主题

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

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

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

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

pyt*_*ude 0

我们通过使用Table模拟多个列的单个所有者绘制列解决了这个问题。