我有一个JFace树视图,其中有许多根节点,每个根节点都有多个级别的子节点。例如
Root 1
child1
child1.child1
child2
child2.child1
Root 2
child1
child1.child1
child2
child2.child1
如果我点击root 1下的任何一个孩子,我想获得Root 1节点,如果我点击Root 2下的任何一个孩子,我想获得Root 2节点?
我选择了但是只有一个方法getFirstElement()我该怎么做?
viewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
TreeViewer viewer = (TreeViewer) event.getViewer();
IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
Object selectedNode = thisSelection.getFirstElement();
viewer.setExpandedState(selectedNode,
!viewer.getExpandedState(selectedNode));
}
});
答案 0 :(得分:0)
您可以使用树查看器Content Provider的getParent(Object element)
方法获取元素的父级 - 这样您就可以使用它向上移动树。
您需要在某处记住您的内容提供商,或使用
ITreeContentProvider provider = (ITreeContentProvider)viewer.getContentProvider();
其中viewer
是您的树查看器。
您有责任编写内容提供商的getParent
方法。
因此,必须使用有关其父级的信息创建数据模型类:
class DataModelObject
{
private DataModelObject parent;
DataModelObject(DataModelObject parent)
{
this.parent = parent;
}
DataModelObject getParent()
{
return parent;
}
}
或只保存根目录:
class DataModelObject
{
private DataModelObject root;
DataModelObject(DataModelObject root)
{
this.root = root;
}
DataModelObject getRoot()
{
return root;
}
}