我有一个 JTree,我用它来显示一些(意料之中的)分层数据。规范的一部分是用户可以更改数据源(atm 它只是在文件之间)。现在,当发生这种情况时,我可以毫无问题地重建数据和树节点。但是,我很难让树更新更改。我尝试将它从它的滚动 Pane 中删除并替换为新的 JTree,但我没有看到任何这样的东西。我已尝试从 JTree 中删除所有内容,但没有看到任何效果。
JTree构造完成后如何显示变化?
Ninjedit:是的,我确实调用了 updateUI()。
另一个编辑: 我还想用我的新数据替换树的当前数据。但是,我没有看到任何方法会采用我构建的 DefaultMutableTreeNode。即使我只是删除 JTree 并调用包含 ScrollPane 的 updateUI,也没有任何反应。或者,如果我改用重绘。
最佳答案
可能是适当的事件(JTree 内部事件)没有被触发。例如,您可以使用 node.add(...)
或更好的方法 model.insertNodeInto(...)
添加节点(假设您正在使用DefaultTreeModel
)。在这种情况下,后一种方法是首选,因为它会触发适当的事件,从而使 View (JTree)正确更新。您的问题可能不是重绘 UI,而是通知 View 模型已更改。
因此,我建议您查看如何动态修改 JTree,如果可能的话,我建议您使用 DefaultTreeModel
作为模型来驱动 View 。
为了确保您已通读 the Sun JTree tutorials ,对吧?
关于Java- 更新 JTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460313/