0

我是 Eclipse SWT 的新手。我正在尝试覆盖treeViewer 的颜色行的getBackground方法。ITableColorProvider我正在尝试使用 row index 着色(index%2 == 0)。它改为为所有行着色。

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 );
        }
4

1 回答 1

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;
        }
    }

颜色类是 org.eclipse.swt.graphics.Color 中的一个。我认为每个 TreeItem 都有一个 id 属性,该属性是同时生成的

于 2016-02-17T20:37:57.170 回答