我在GUI中使用了JTree并将其添加到JFrame。 当我想要在程序的另一部分(当程序正在运行时,作为操作执行)更新它并更改其节点时,我尝试向其中添加新节点或删除节点。 但是我的界面没有更改。 请建议一个解决方案。
问候
除了使用insertNodeInto的建议之外,您还可以使用:
DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);
JTree
,收到事件后它会重新绘制。DefaultTreeModel
包含以下方法:
nodeChanged
nodesChanged
nodeStructureChanged
nodesWereInserted
nodesWereRemoved
此外,与所有 Swing 编程一样,您需要确保在事件分派线程上更新您的模型。你的意思是GUI方面没有显示你的更改吗?你应该看一下repaint()
和revalidate()
。
这里有一个很好的描述,说明何时调用哪个方法。