Tree中的所有节点都未展开

时间:2015-09-15 08:03:29

标签: java treeview swt eclipse-rcp rcp

我正在尝试在RCP中学习TreeViewer。我为此写了一小段代码。

public class TreeViewClass extends ViewPart {

public static final String ID = "TreeViewerDemo.treeView";

public TreeViewClass() {
    // TODO Auto-generated constructor stub
}

@Override
public void createPartControl(Composite parent) {

    TreeViewer treeViewer = new TreeViewer(parent, SWT.BORDER);
    Tree tree = treeViewer.getTree();

    TreeItem root = new TreeItem(tree, 0);
    root.setText("Root Node");

    TreeItem childNode1 = new TreeItem(root, 0);
    childNode1.setText("Child Node 1");

    TreeItem childNode2 = new TreeItem(childNode1, 0);
    childNode2.setText("Child Node 2");
}

@Override
public void setFocus() {
    // TODO Auto-generated method stub

}

}

当我运行此代码时,将显示树,但只显示根节点。当我单击根节点(带有箭头图标,表示它有子节点)时,节点不显示子节点。 后来我发现,当我将setExpanded(true)应用于节点时,它会显示出来,否则就不会显示。

我的代码中的问题在哪里?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用TreeViewer,则不应使用TreeItem。而是使用内容提供商和标签提供商。如果您想使用TreeItem使用Tree。将两者混合会产生不可预测的结果。

使用TreeItem时,您需要在每个要展开的项目上调用setExpanded(true)