【发布时间】:2012-07-10 12:04:01
【问题描述】:
在具有基于 SWT 的 GUI 的 Java 桌面应用程序中,我们有一个表,其中某些行必须跨越多个列。使用此官方 SWT Snippet 中显示的方法解决了这个问题:Snippet239.java
然而,很久以后才发现,在默认 Ambiance/Radiance 主题的 Ubuntu 上,这种方法存在一个主要问题:列之间总是有垂直线,即使对于跨越多列的单元格也是如此。这显示在以下屏幕截图中:
如您所见,在第一个屏幕截图中,第 1 列和第 2 列之间有一条垂直线。有人知道如何摆脱这些线吗?
我们已经尝试了以下方法:
-
Table.setLinesVisible(false):不行,竖线不走。 - 使用基于所有者绘制的标签提供程序来绘制这些垂直线:不起作用,垂直线似乎是在标签提供程序绘制的所有内容之上绘制的。
- 将绘图侦听器附加到表格以在垂直线上绘制:不起作用,因为每当表格滚动或以其他方式更新时都会出现很多故障。
- Nebula project 有一个 Grid 小部件,其中单元格可以跨越多列,并且垂直线没有问题,因为整个表格是非本地绘制的。但是,我们不能证明用 Grid 小部件替换我们的表格只是为了解决具有某些主题的特定平台上的垂直线问题。此外,Grid 小部件似乎是预发布的 alpha 版本。
根据我们已经尝试过的事情,我认为剩下的唯一方法就是在 SWT 的特定平台内部进行处理,但我什至不知道从哪里开始这样的事情。
【问题讨论】:
-
听起来像这个错误bugs.eclipse.org/bugs/show_bug.cgi?id=138909,它看起来没有太多动作。除了寻找解决方法之外,您应该做的一件事是解决这个错误。
-
这与您所说的 setLinesVisible 方法相同吗? table.setShowGrid(false);
-
@Logan:SWT Table 小部件没有 setShowGrid 方法,AFAIK。也许您是指 Swing 中的 JTable?
-
是的,你是对的,对此感到抱歉。我总是把那些搞混了。