如何在JFace TreeViewer中显示根元素?

时间:2011-04-12 07:11:19

标签: java treeview swt jface

我有一个JFace Treeviewer,但它不显示作为输入传递的'root'元素。仅显示根的子项。 是否也可以显示根目录?

3 个答案:

答案 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
}