Java 更改JFace tableviewer中行的背景色时出错

Java 更改JFace tableviewer中行的背景色时出错,java,jface,e4,tableviewer,Java,Jface,E4,Tableviewer,我想根据某些条件更改tableviewer的行颜色。我使用了以下代码片段 tableViewer.setLabelProvider(new ColumnLabelProvider(){ @Override public Color getForeground(Object element){ super.clearListeners(); if((((MyClass)element).getMyMethodVal

我想根据某些条件更改tableviewer的行颜色。我使用了以下代码片段

tableViewer.setLabelProvider(new ColumnLabelProvider(){
        @Override
        public Color getForeground(Object element){
             super.clearListeners();
             if((((MyClass)element).getMyMethodValue()).equals("ABC"))
               return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
             else
               return null;
        }
    });
行的颜色正在更改,但每个单元格的文本都更改为模型类“MYClass”的对象名称,如com.sample.JfaceProject.model。MyClass@394083 . 我对为什么表格的每个单元格中的文本都发生了变化感到困惑。我做得对吗?谁能给我提些建议吗


提前感谢

如果您使用
ColumnLabelProvider
您必须使用它来处理该列的所有事情-因此您需要覆盖
getText
以及
getForeground

ColumnLabelProvider
的默认
getText

public String getText(Object element) {
  return element == null ? "" : element.toString();//$NON-NLS-1$
}

正是
元素.toString()
生成了'com.sample.JfaceProject.model'。MyClass@394083'输出-这是默认的
对象.toString()
输出。

在我的tableviewer中,一列是字符串类型,其他列是选中/未选中的图像。我应该为所有列重写getText()和getImage()方法吗?还有其他方法吗?一旦开始使用ColumnLabelProvider,您就必须对所有列使用它。实现ITableColorProvider和ITableLabelProvider来设置行的颜色是否正确?是的,您可以将它们与ITableLabelProvider一起使用。有几种不同的做事方式!现在它运行良好。这一行的颜色是灰色的。但我无法编辑复选框。更改行中的颜色后,是否必须再次调用EditingSupport?