2015-05-18 151 views
0

我是新的eclipse SWT。我正在嘗試覆蓋ITableColorProvidergetBackground方法,以替換爲treeViewer的行。我正在嘗試着色行索引(index%2 == 0)。它改爲對所有行進行着色。TreeViewer顏色行交替

TreeViewer一次爲一個單元格顏色,而不是行。有關如何實現它的指針(treeviewer的備用行顏色)或代碼片段將非常有幫助。

List<TreeItem> treeItems = Arrays.asList(m_viewer.getTree().getItems()); 
int index = treeItems.indexOf(element); 

if(index % 2 == 0) 
     { 
      backgroundColor = Display.getDefault().getSystemColor(
        SWT.COLOR_YELLOW); 
     } 
     else 
     { 
      backgroundColor = Display.getDefault().getSystemColor(
        SWT.COLOR_GRAY); 
     } 
+0

向我們展示您試過的代碼 –

+0

'element'不是'TreeItem',因此'indexOf'不起作用。 –

+0

任何指針如何使其工作? – topsyl

回答

0

ITableColorProvider用於TableViewer,爲TreeViewer類擴展LabelProvider應該實現IColorProvider

public class MyLabelProvider extends LabelProvider implements IColorProvider{ 

     @Override 
     public String getText(Object element) { 
      //how the label is obtained for an element 
     } 

     @Override 
     public Color getBackground(Object element) { 
      if(((TreeItem) element).getId() % 2 == 0) { 
       return Display.getCurrent().getSystemColor(SWT.COLOR_BLUE); 
      }else{ 
       return Display.getCurrent().getSystemColor(SWT.COLOR_RED); 
      }     
     } 

     @Override 
     public Color getForeground(Object element) { 
      return null; 
     } 
    } 

Color類是從org.eclipse.swt.graphics.Color之一。我認爲每個TreeItem都有一個id屬性,這個屬性是同時生成的