8

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

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

带有 Ambiance/Radiance 主题的 Ubuntu

带有 Clearlooks 主题的 Ubuntu

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

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

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

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

4

1 回答 1

0

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

于 2012-08-12T22:52:32.953 回答