【问题标题】:TreeViewer Expand-/Collapse-ToLevel BugTreeViewer Expand-/Collapse-ToLevel 错误
【发布时间】:2014-06-03 15:58:13
【问题描述】:

我有一个 TreeViewer,我试图将其项目展开或折叠一层。 我的 TreeViewer 包含具有相同名称的项目。 例如:

Node 1
  -> Node A
      -> Node B
         -> Node C
Node 2
  -> Node A
      -> Node B
         -> Node C

即使我选择第二个节点 A 展开或折叠,它仍然会展开或折叠第一个节点 A。

我的展开代码是:

ITreeSelection selection = (ITreeSelection) tree.getSelection();
TreeNode selectedItem = (TreeNode) selection.getFirstElement();
tree.expandToLevel(selectedItem, 1);

我的折叠代码是:

ITreeSelection selection = (ITreeSelection) tree.getSelection();
TreeNode selectedItem = (TreeNode) selection.getFirstElement();
TreeNode[] children = selectedItem.getChildren();
if (children != null) {
    for (TreeNode child : children) {
         tree.collapseToLevel(child, 1);
    }
}

我该怎么做才能让 TreeViewer 展开和折叠正确的选定项目?

【问题讨论】:

    标签: java swt treeviewer


    【解决方案1】:

    您必须确保树中具有相同名称的不同对象的equals 方法不会返回true。如果 equals 为两个不同的对象返回 true,则树查看器将无法找到正确的树项。与往常一样,您必须使 hashCode 与 equals 实现兼容。

    如果您无法修复对象中的equals 方法,您可以使用IElementComparer 为树查看器创建一个特殊的比较。使用TreeViewer.setComparer 设置树的比较器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多