我正在尝试将节点添加到我的JTree中。我这样做是这样的:
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(event.getObjectThatHasChanged());
root.add(newNode);
((DefaultTreeModel) tree.getModel()).reload();
但是,树本身不会更新。我已经读过posts reload()是你应该调用的,但没有效果。另请注意,这是在美国东部时间召开的。有什么想法吗?
编辑:
我尝试过这种方法:
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(event.getObjectThatHasChanged());
((DefaultTreeModel) tree.getModel()).
insertNodeInto(newNode, root, root.getChildCount() - 1);
仍然没有去。但是,当我关闭程序并重新打开它时,新节点就在那里。 (我坚持我的数据)。
答案 0 :(得分:3)
使用DefaultTreeModel
insertNodeInto 方法将节点添加到JTree。引用API
然后,这将消息nodesWereInserted以创建适当的事件。这是添加子项的首选方法,因为它将创建适当的事件。
例如:
((DefaultTreeModel) tree.getModel()).insertNodeInto(newNode, root, 0);//inserts at beginning
//((DefaultTreeModel) tree.getModel()).insertNodeInto(newNode, root, root.getChildCount() - 1);//inserts at end