我正在尝试在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)应用于节点时,它会显示出来,否则就不会显示。
我的代码中的问题在哪里?
谢谢!
答案 0 :(得分:1)
如果您使用TreeViewer
,则不应使用TreeItem
。而是使用内容提供商和标签提供商。如果您想使用TreeItem
使用Tree
。将两者混合会产生不可预测的结果。
使用TreeItem
时,您需要在每个要展开的项目上调用setExpanded(true)
。