2014-05-20 28 views
1

我想更改tableviewer的行顏色取決於特定的條件。我使用了下面的代碼片段。更改JFace 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」像[email protected]。我很友好,爲什麼在表格的每個單元格中都改變了文字。我做得對嗎?任何人都可以給我一些建議。

由於提前

回答

1

如果使用ColumnLabelProvider你必須使用它的一切與列做 - 所以你需要重寫getText以及getForeground

默認getTextColumnLabelProvider

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

它是被產生 '[email protected]' 輸出的element.toString() - 這是默認Object.toString()輸出。

+0

在我的tableviewer中,一列是字符串類型,另一列是checkd/unchecked Images。我是否應該爲所有列重寫getText()和getImage()方法?有沒有其他方法? – Acjb

+0

一旦開始使用ColumnLabelProvider,您必須將其用於所有列。 –

+0

實現ITableColorProvider和ITableLabelProvider以設置行的顏色是否正確? – Acjb