Как отобразить корневой элемент в JFace TreeViewer? - PullRequest
3 голосов
/ 12 апреля 2011

У меня есть JFace Treeviewer, однако он не отображает «корневой» элемент, который передается в качестве ввода. Только дети корня показаны. Можно ли тоже отобразить рут?

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011

Входные данные не определены как корень TreeViewer. На самом деле просмотрщик деревьев не знает, кто из них является root, а какой нет. Это решается методами contentprovider.getElements () . С большой вероятностью, я думаю, вы вызываете getChildren () внутри этого метода. Это приводит к возврату дочерних элементов корневых элементов, а не к возврату самих корневых элементов.

0 голосов
/ 29 июля 2014

Элемент ввода TreeViewer не должен отображаться. Проблема может быть решена так:

treeViewer.setInput("root");

А в ContentProvider:

public Object[] getElements(Object arg0) {
    return new Object[] { rootItem }; // your root item you want to display
}
0 голосов
/ 27 марта 2013

Я столкнулся с точно такой же проблемой и решил ее, используя логическое поле 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;
}
...