2

我正在开发 Eclipse 插件。在这里我创建了一个单独的视图,现在我想格式化树节点的颜色。

这些是 createpartcontrol 方法中的代码。

ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL );
  Composite composite1 = new Composite(sc, SWT.NONE);
  Composite composite_1 = creatingcomposite(composite1);
  Tree tree = new Tree(composite_1,  SWT.FULL_SELECTION );

   TreeItem item = new TreeItem(tree, SWT.NONE);

在这里我想设置一些颜色,比如蓝色。

item.setText("This is sparta"); 

现在在这里我想要一些不同的颜色,比如子项文本上的黄色。

TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
subsubItem.setText(new String[] { "Function Name:          "+ errorPreTest11.description.get(j).function });

为此,我尝试设置 SWT.COLOR_BLUE 但它不起作用。

4

2 回答 2

4

利用

item.setForeground(tree.getDisplay().getSystemColor(SWT.COLOR_BLUE));

您也可以创建自己的颜色,但如果这样做,您必须在完成后处理掉它们。

于 2013-10-21T10:05:35.767 回答
0

我建议你使用TreeViewer. LabelProvier在这种情况下,您将具有在查看器上设置 a 的功能。标签提供程序有一个名为 的子类StyledCellLabelProvider,您可以成功扩展它以提供标签的样式,如下所示:(另请参阅TextStyle类以获取更多格式选项)。

public class MyStyledLabelProvider extends StyledCellLabelProvider {

private Styler defaultStyler;
public MyStyledLabelProvider () {
        defaultStyler = new Styler() {
            @Override
            public void applyStyles(TextStyle textStyle) {
                textStyle.strikeout = true;
            }
        };
    }

@Override
    public void update(ViewerCell cell) {
        Object element = cell.getElement();
        StyledString styledString = getStyledString(element);
        cell.setText(styledString.toString());
        cell.setStyleRanges(styledString.getStyleRanges());
        super.update(cell);
    }

    @SuppressWarnings("unchecked")
    private StyledString getStyledString(Object element) {
        return new StyledString("Cell string", defaultStyler);
    }
}
于 2013-10-21T13:13:27.830 回答