0

基本的に私は Java のツリービューアー (org.eclipse.jface.viewers.TreeViewer) を使用しています。今私の問題は、子要素/アイテムを既存のノットに追加したいということです。

まず、私のツリーは次のようになります。

Knot A
Knot B
Knot C
 >child1
 >child2

これらの子 (child1、child2) は手動で追加されるのではなく、ツリー自体を手に入れる前に生成されます。

  1. ツリービューアを作成します: viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  2. viewer.setInput(....elements()); 上から状態を生成するtreeviewer: にデータを取り込み ます。

  3. viewer.getTree().getItem(0)私の木の正しい結び目 A を返します。

しかし、既存のノットに新しい子を追加することはできません。私は次のことなどを試しました:

TreeItem newItem = new TreeItem(items[0], SWT.NONE); and viewer.add(items[0], newItem); with a newly created item viewer.refresh();

理論的には、最初にツリービューアーにデータを入力する arrayList を操作できましたが、それは本当に悪いと思います。

私は今何が間違っているのか本当にわかりません。かなりばかげた質問だと思います。そうでしたか、失礼しました(^^)

ご協力いただきありがとうございます。あなたが提供できるすべてのヒントに感謝します。

4

1 に答える 1

5

「モデル」( に与えるデータsetInput) を更新することは、ツリーを更新する正しい方法です。TreeViewer.refresh()orを呼び出しTreeViewer.refresh(element)てツリー ビューアーを取得し、モデルからツリーを更新します。

を使用しているときは、オブジェクトを作成TreeViewerすることTreeItemはありません- ビューアーがそれを行います。refresh、、 ... メソッドに渡すものはすべてupdateaddTreeItem ではなく、モデルのオブジェクトです。

于 2014-06-27T10:57:40.637 に答える