0

アイテムを1レベル展開または折りたたもうとしているTreeViewerがあります。私の TreeViewer には、同じ名前のアイテムが含まれています。例えば:

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

展開または折りたたみのために 2 番目のノード 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 が正しい選択項目を展開および折りたたむようにするにはどうすればよいですか?

4

1 に答える 1

1

equalsツリー内の同じ名前を持つ異なるオブジェクトのメソッドが を返さないようにする必要がありtrueます。equals2 つの異なるオブジェクトに対して true を返す場合、ツリー ビューアは正しいツリー アイテムを見つけることができません。hashCodeいつものように、equals 実装と互換性を持たせる必要があります。

equalsオブジェクトのメソッドを修正できない場合はIElementComparer、ツリー ビューア用の特別な比較を作成するために使用できます。TreeViewer.setComparerツリーの比較子を設定するために使用します。

于 2014-06-03T07:58:13.630 に答える