Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TreeViewer扩展/折叠到级别错误_Java_Swt_Treeviewer - Fatal编程技术网

Java TreeViewer扩展/折叠到级别错误

Java TreeViewer扩展/折叠到级别错误,java,swt,treeviewer,Java,Swt,Treeviewer,我有一个TreeViewer,我试图将其项目扩展或折叠一级。 My TreeViewer包含具有相同名称的项。 例如: Node 1 -> Node A -> Node B -> Node C Node 2 -> Node A -> Node B -> Node C 即使选择要展开或折叠的第二个节点A,它仍将展开或折叠第一个节点A 我的扩展代码是: ITreeSelection select

我有一个TreeViewer,我试图将其项目扩展或折叠一级。 My 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展开和折叠正确的选定项?

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

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