0

基本上我正在使用Java(org.eclipse.jface.viewers.TreeViewer)中的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. 我填充了 treeviewer: viewer.setInput(....elements()); 从上面生成状态。

  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()TreeViewer.refresh(element)让树查看器从模型更新树。

当您使用时,TreeViewer永远不会创建TreeItem对象 - 查看器会这样做。您传递给refresh, update, add... 方法的所有内容都是模型中的对象,而不是 TreeItems。

于 2014-06-27T10:57:40.637 回答