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