3

我有一个 JTree,我用它来显示一些(不出所料)分层数据。规范的一部分是用户可以更改数据源(atm 它只是在文件之间)。现在,当这种情况发生时,我可以毫无问题地重建数据和树节点。但是,我很难让树更新更改。我尝试将它从它的滚动窗格中删除并替换为新的 JTree,但我没有看到任何此类内容。我尝试从 JTree 中删除所有内容,但没有看到任何效果。

如何在构建 JTree 后对其进行显示更改?
Ninjedit:是的,我确实调用了 updateUI()。

另一个编辑:我还想用我的新数据替换树的当前数据。但是,我没有看到任何可以采用我构建的 DefaultMutableTreeNode 的方法。即使我只是删除 JTree 并在它包含 ScrollPane 上调用 updateUI,也不会发生任何事情。或者,如果我改用重绘。

4

1 回答 1

5

可能是没有触发正确的事件(JTree 内部事件)。例如,您可以通过使用node.add(...)甚至更好地添加节点model.insertNodeInto(...)(假设您使用的是DefaultTreeModel)。在这种情况下,首选后一种方法,因为它会触发适当的事件,从而导致视图(JTree)正确更新。您的问题可能不在于重绘 UI,而是实际上通知视图模型已更改。
因此,我建议您研究如何动态修改您的 JTree,如果可能的话,我建议使用DefaultTreeModel作为您的模型来驱动视图。

只是为了确保您已经阅读了 Sun JTree 教程,对吗?

于 2010-08-11T16:23:00.163 回答