选中子节点上的 CheckboxTreeViewer 获取父节点值

CheckboxTreeViewer on checked Children node get Parent node value

我正在使用 JFace CheckboxTreeViewer 并添加 ICheckStateListener 来获取选中的元素,

我的CheckboxTreeViewer结构如下,

P1
 ----Child1
 ----Child2
 ----Child3
 ----Child4
P2
 ----Child6
 ----Child7
 ----Child8
 ----Child9

我的要求是当我检查子节点时获取其相关父节点

例如

当我检查 Child8 然后得到父节点 p2 当我检查 Child2 然后得到父节点 p1

如何实现?

您通过调用 getElement 方法获取从 CheckStateChangedEvent 传递给侦听器的已更改元素:

public void checkStateChanged(CheckStateChangedEvent event) {

  Object changed = event.getElement();

这是您的树内容提供者提供的对象。所以你可以通过询问内容提供者来获取它的父级:

  ITreeContentProvider provider = (ITreeContentProvider)viewer.getContentProvider();

  Object parent = provider.getParent(changed);

其中 viewerCheckboxTreeViewer