Java SWT TableViewer颜色交替(在某些操作系统中)

Java SWT TableViewer颜色交替(在某些操作系统中),java,swt,jface,Java,Swt,Jface,在一些操作系统(比如我的Ubuntu 11.10)中,有一些有趣的表格元素行为:背景颜色从白色变为灰色(第一个元素是白色,第二个是灰色,第三个是白色,等等) 在我的应用程序中,我想为JFace TableViewer(这是必要的)编写我自己的CellLabelProvider,我正在使用类的扩展OwnerDrawLabelProvider(和覆盖绘制方法) 我想用我自己的颜色绘制指定的行,用系统中的其他颜色绘制(Display.getCurrent().getSystemColor(…),但问题

在一些操作系统(比如我的Ubuntu 11.10)中,有一些有趣的表格元素行为:背景颜色从白色变为灰色(第一个元素是白色,第二个是灰色,第三个是白色,等等)

在我的应用程序中,我想为
JFace TableViewer
(这是必要的)编写我自己的
CellLabelProvider
,我正在使用类的扩展
OwnerDrawLabelProvider
(和覆盖绘制方法)

我想用我自己的颜色绘制指定的行,用系统中的其他颜色绘制
(Display.getCurrent().getSystemColor(…)
,但问题是,如果我在
SWT.color\u LIST\u BACKGROUND
中绘制它,那么所有行都将被绘制为白色,而没有交替。我如何设置它


我调试了应用程序,并意识到这两种类型的绘图(白色和灰色)都有相同的颜色-白色(这是正确的)。

没有办法像操作系统那样明确地“所有者绘制”它。如果你想让一行有它自己的背景颜色,你就不能自己绘制背景。

Thanx回答,太糟糕了=/还有一个问题:如果我不自己绘制所有颜色,有我自己的DrawLabelProvider的单元格和有simple ColumnLabelProvider的其他单元格(在我的表中都有)行为稍有不同:当我选择行,然后取消激活表/窗口(如应用程序上的焦点窗口)时,OwnerDrawLabelProvider单元格保持选中颜色,但ColumnLabelProvider单元格变为选中灰色(其他颜色)。看起来这种行为我也不能“画主人”。。。还是不?你能告诉我一些事情吗?又来了!这是因为如果选择了行,则您的
OwnerDrawLabelProvider
会绘制单元格的背景。这在
擦除(..)
方法中发生。用空方法重写它以阻止它这样做。然后,细胞应具有其固有的行为。