在JFace树视图中获取选择的根节点

时间:2015-02-06 10:06:04

标签: java treeview jface

我有一个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));
  }
}); 

1 个答案:

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