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

时间:2014-05-20 13:25:20

标签: java jface e4 tableviewer

我想更改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。我很有兴趣为什么在表的每个单元格中更改文本。我做得对吗?任何人都可以向我提出一些想法。

先谢谢

1 个答案:

答案 0 :(得分:1)

如果您使用ColumnLabelProvider,则必须将其用于与列相关的一切 - 因此您需要覆盖getText以及getForeground

getText的默认ColumnLabelProvider

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

生成'com.sample.JfaceProject.model.MyClass@394083'输出的是element.toString() - 这是默认的Object.toString()输出。