TreeViewer цветовой ряд в качестве альтернативы

Я новичок в затмении SWT. Я пытаюсь переопределить getBackground метод ITableColorProvider покрасить строки в качестве альтернативы treeViewer. Я пытался раскрасить с индексом строки (index%2 == 0), Вместо этого он раскрашивает все строки.

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

1 ответ

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, которое генерируется последовательно

Другие вопросы по тегам