我有一个JFace Treeviewer,但它不显示作为输入传递的'root'元素。仅显示根的子项。 是否也可以显示根目录?
答案 0 :(得分:3)
输入未被确定为TreeViewer的根。事实上,树视图不知道哪个是根,哪个不是。它由contentprovider.getElements()方法决定。最有可能的是,我猜你在该方法中调用了getChildren()。这导致返回根元素的子元素而不是返回根元素本身。
答案 1 :(得分:0)
我遇到了完全相同的问题并通过使用布尔字段treeInputSet
解决了这个问题,其中Model
是要在树中显示的域类:
// Field to hold whether tree input was set
private boolean treeInputSet = false;
// Other code...
@Override
public Object[] getElements(Object inputElement)
{
if (inputElement instanceof Model)
{
if (treeInputSet)
{
Model model = (Model) inputElement;
return model.getChildren().values().toArray();
}
else
{
treeInputSet = true;
return new Object[] { inputElement };
}
}
return null;
}
答案 2 :(得分:0)
不应显示TreeViewer的输入元素。这个问题可以这样解决:
treeViewer.setInput("root");
在ContentProvider中:
public Object[] getElements(Object arg0) {
return new Object[] { rootItem }; // your root item you want to display
}