JFace Tree Viewer:节点扩展的监听器?
JFace Tree Viewer: Listener for node expansion?
我有一个 JFace 树,需要在展开之前将每个展开的父元素存储在一个变量中,因为我需要一个对展开元素的引用我的 Label Provider 中的方法似乎是在单击扩展箭头后直接调用的。
我知道 ITreeViewerListener 接口可用于获取元素在它已完全展开后,但不是在展开时(=直接在单击元素展开器箭头后).这样,当我尝试在我的 Label Provider 中使用对扩展元素的引用时,我得到一个空指针异常,因为 Label Provider 在单击元素扩展器箭头后直接被调用,而不是等待元素完全扩展。
我尝试使用 ISelectionChangedListener。遗憾的是,当单击其扩展箭头时,该元素未被选中,因此未触发 ISelectionChangedListener。
经过一番研究,我发现有一个 TreeWillExpandListener 可以摇摆。这似乎正是我所需要的,但我无法让它与我的 JFace Tree Viewer 一起工作。有什么方法可以使用 JFace 完成这项工作吗?
多亏了 greg-449,我对 Content Provider 有了更深入的了解。
最初,我有单独的 classes 用于我的 Label Provider 和 Content Provider。通过创建实现 ITableLabelProvider 和 ITreeContentProvider 的单个 class,我可以将它们连接在一起,从而使我的 Label Provider 无需选择即可访问每个元素的父元素。
我有一个 JFace 树,需要在展开之前将每个展开的父元素存储在一个变量中,因为我需要一个对展开元素的引用我的 Label Provider 中的方法似乎是在单击扩展箭头后直接调用的。
我知道 ITreeViewerListener 接口可用于获取元素在它已完全展开后,但不是在展开时(=直接在单击元素展开器箭头后).这样,当我尝试在我的 Label Provider 中使用对扩展元素的引用时,我得到一个空指针异常,因为 Label Provider 在单击元素扩展器箭头后直接被调用,而不是等待元素完全扩展。
我尝试使用 ISelectionChangedListener。遗憾的是,当单击其扩展箭头时,该元素未被选中,因此未触发 ISelectionChangedListener。
经过一番研究,我发现有一个 TreeWillExpandListener 可以摇摆。这似乎正是我所需要的,但我无法让它与我的 JFace Tree Viewer 一起工作。有什么方法可以使用 JFace 完成这项工作吗?
多亏了 greg-449,我对 Content Provider 有了更深入的了解。
最初,我有单独的 classes 用于我的 Label Provider 和 Content Provider。通过创建实现 ITableLabelProvider 和 ITreeContentProvider 的单个 class,我可以将它们连接在一起,从而使我的 Label Provider 无需选择即可访问每个元素的父元素。