我有一个JTree,我用来显示一些(不出所料)的分层数据。规范的一部分是用户可以更改数据源(仅仅是在文件之间)。现在,当发生这种情况时,我可以毫无问题地重建数据和树节点。但是,我在让树更新更改时遇到很大困难。我尝试从它的滚动窗格中删除它并替换为新的JTree,但我没有看到任何这样的。我试过从JTree中删除所有内容并没有看到任何效果。
如何在构建之后使JTree显示更改?
Ninjedit:是的,我确实调用了updateUI()。
另一个编辑: 我还想用我的新数据替换树的当前数据。但是,我没有看到任何方法将采用我构造的DefaultMutableTreeNode。即使我只删除了JTree并在其上调用了包含ScrollPane的updateUI,也没有任何反应。或者如果我改为使用重绘。
答案 0 :(得分:5)
可能是因为没有触发正确的事件(JTree内部事件)。例如,您可以使用node.add(...)
或更好的model.insertNodeInto(...)
添加节点(假设您使用的是DefaultTreeModel
)。在这种情况下,后一种方法是首选方法,因为它将触发将导致视图(JTree)正确更新的适当事件。您的问题可能不是重新绘制UI,而是实际上通知视图模型已更改。
因此,我建议您查看如何动态修改JTree,如果可能,我建议您使用DefaultTreeModel
作为模型来驱动视图。
只是为了确保您已阅读the Sun JTree tutorials,对吧?