我有一个JTree,我用它来显示一些(意料之中的)分层数据。规范的一部分是用户可以更改数据源(atm,它只在文件之间)。现在,当这种情况发生时,我可以毫不费力地重建数据和树节点。但是,我很难让树来更新这些更改。我试着从它的滚动窗格中删除它,并用一个新的JTree替换,但我没有看到任何这样的东西。我已经尝试从JTree中删除所有内容,但没有看到任何效果。
如何在构造JTree显示后对其进行更改?
忍者:是的,我确实调用了updateUI()。
另一个编辑:我还想用我的新数据替换树的当前数据。但是,我没有看到任何方法会采用我用来构造的DefaultMutableTreeNode。即使我只是删除JTree并在它包含ScrollPane的情况下调用updateUI,也没有任何反应。或者如果我用重画来代替。
发布于 2010-08-12 00:23:00
可能是未触发正确的事件( JTree内部事件)。例如,您可以使用node.add(...)或更好的model.insertNodeInto(...) (假设您使用的是DefaultTreeModel)添加节点。在这种情况下,推荐使用后一种方法,因为它将触发适当的事件,从而使视图( JTree)正确更新。您的问题可能不在于重绘UI,而在于实际上通知视图模型已更改。
因此,我建议研究一下如何动态修改JTree,如果可能的话,我建议使用DefaultTreeModel作为模型来驱动视图。
为了确认一下,你已经通读过the Sun JTree tutorials了,对吧?
https://stackoverflow.com/questions/3460313
复制相似问题