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