【发布时间】:2015-05-14 19:35:26
【问题描述】:
我正在尝试向我的 JTree 添加一个节点。我是这样做的:
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(event.getObjectThatHasChanged());
root.add(newNode);
((DefaultTreeModel) tree.getModel()).reload();
但是,树本身不会更新。我读过posts 说 reload() 是你应该调用的,但没有效果。另请注意,这是在 EDT 上调用的。有什么想法吗?
编辑:
我已经尝试过这种方法:
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(event.getObjectThatHasChanged());
((DefaultTreeModel) tree.getModel()).
insertNodeInto(newNode, root, root.getChildCount() - 1);
还是不行。但是,当我关闭程序并重新打开它时,新节点就在那里。 (我坚持我的数据)。
【问题讨论】:
-
对于example
-
@MadProgrammer 你使用
node.getChildCount()),因为copeg在他的例子中有node.getChildCount() - 1)。你能澄清哪个是正确的吗? -
@user489041 Java是零索引,所以实际的节点数是getChildCount - 1。所以在给父模式添加一个节点后,需要引用最后一个节点...