java treeviewer添加元素

时间:2014-06-27 10:42:26

标签: java treeview jface treeviewer

基本上我正在使用Java中的treeviewer(org.eclipse.jface.viewers.TreeViewer)。 现在我的问题是,我想在现有结中添加一个childelement / item。

首先,我的树看起来像这样:

Knot A
Knot B
Knot C
 >child1
 >child2

这些孩子(child1,child2)不是手动添加的,而是在我亲自动手树之前生成的。

  1. 我创建了treeviewer: viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  2. 我填充了树形图: viewer.setInput(....elements()); 从上面生成状态。

  3. viewer.getTree().getItem(0)返回我树的正确结点。

  4. 但我不能在现有的结上添加一个新的孩子。 我尝试了以下和其他事情:

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

    理论上我可以操作arrayList,它首先填充树视图,但我认为这真的很糟糕。

    我真的不知道我现在做错了什么。 我想这是一个非常愚蠢的问题。如果是这样的话,那我很抱歉。^^

    感谢您的帮助,我很感激您提供的每一个提示。

1 个答案:

答案 0 :(得分:4)

更新“模型”(您提供给setInput的数据)是更新树的正确方法。调用TreeViewer.refresh()TreeViewer.refresh(element)以使树查看器更新模型中的树。

当您使用TreeViewer 从不创建TreeItem个对象时,查看器就会这样做。您传递给refreshupdateadd ...方法的所有内容都是模型中的对象,而不是TreeItems。