Java 在JFace树视图中获取所选内容的根节点
我有一个JFace树视图,其中有许多根节点,每个根节点都有多个级别的子节点。比如说Java 在JFace树视图中获取所选内容的根节点,java,treeview,jface,Java,Treeview,Jface,我有一个JFace树视图,其中有许多根节点,每个根节点都有多个级别的子节点。比如说 Root 1 孩子1 child1.child1 孩子2 child2.child1 根2 孩子1 child1.child1 孩子2 child2.child1 如果我点击根1下的任何子节点,我想得到根1节点,如果我点击根2下的任何子节点,我想得到根2节点 我使用selection进行了检查,但只有一个方法getFirstElement(),我如何才能做到这一点 viewer.addDoubleClickLi
Root 1
孩子1
child1.child1
孩子2
child2.child1
根2
孩子1
child1.child1
孩子2
child2.child1
如果我点击根1下的任何子节点,我想得到根1节点,如果我点击根2下的任何子节点,我想得到根2节点
我使用selection进行了检查,但只有一个方法getFirstElement(),我如何才能做到这一点
viewer.addDoubleClickListener(新的IDoubleClickListener(){
@凌驾
公共无效双击(双击事件){
TreeViewer=(TreeViewer)事件。getViewer();
IsStructuredSelection thisSelection=(IsStructuredSelection)事件。getSelection();
Object selectedNode=thisSelection.getFirstElement();
viewer.setExpandedState(selectedNode,
!viewer.getExpandedState(selectedNode));
}
});
您可以使用树查看器内容提供程序的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;
}
}
我实现了一个selectionlistener,基于树中的选定项,我希望找到它的根节点,并使用内容提供者或向数据模型类添加代码。“树查看器”没有任何内容可以提供给您。我应该如何将内容提供程序添加到根节点?@greg-499您可以为我提供一些伪代码吗?