基本上我正在使用Java中的treeviewer(org.eclipse.jface.viewers.TreeViewer)。 现在我的问题是,我想在现有结中添加一个childelement / item。
首先,我的树看起来像这样:
Knot A
Knot B
Knot C
>child1
>child2
这些孩子(child1,child2)不是手动添加的,而是在我亲自动手树之前生成的。
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
我填充了树形图:
viewer.setInput(....elements());
从上面生成状态。
viewer.getTree().getItem(0)
返回我树的正确结点。
但我不能在现有的结上添加一个新的孩子。 我尝试了以下和其他事情:
TreeItem newItem = new TreeItem(items[0], SWT.NONE); and
viewer.add(items[0], newItem); with a newly created item
viewer.refresh();
理论上我可以操作arrayList,它首先填充树视图,但我认为这真的很糟糕。
我真的不知道我现在做错了什么。 我想这是一个非常愚蠢的问题。如果是这样的话,那我很抱歉。^^
感谢您的帮助,我很感激您提供的每一个提示。
答案 0 :(得分:4)
更新“模型”(您提供给setInput
的数据)是更新树的正确方法。调用TreeViewer.refresh()
或TreeViewer.refresh(element)
以使树查看器更新模型中的树。
当您使用TreeViewer
从不创建TreeItem
个对象时,查看器就会这样做。您传递给refresh
,update
,add
...方法的所有内容都是模型中的对象,而不是TreeItems。