Java-更新JTree

Java-更新JTree,java,swing,jtree,Java,Swing,Jtree,我有一个JTree,我用它来显示一些(毫不奇怪)层次数据。规范的一部分是用户可以更改数据源(仅在文件之间)。现在,当这种情况发生时,我可以毫无问题地重建数据和树节点。但是,我很难让树更新更改。我试着从它的滚动窗格中删除它,并用一个新的JTree替换它,但我没有看到任何这样的东西。我尝试从JTree中删除所有内容,但没有看到任何效果 构建JTree后,如何更改其显示? 是的,我确实调用了updateUI() 另一编辑: 我还想用新数据替换树的当前数据。但是,我没有看到任何方法将采用我构建的Defa

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

构建JTree后,如何更改其显示?
是的,我确实调用了updateUI()

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

可能是没有触发正确的事件(JTree内部事件)。例如,您可以通过使用
node.add(…)
或更好的方法,
model.insertNodeInto(…)
(假设您使用的是
DefaultTreeModel
)。在这种情况下,最好使用后一种方法,因为它将触发适当的事件,从而使视图(JTree)正确更新。您的问题可能不是重绘UI,而是实际上通知视图模型已更改。
因此,我建议查看如何动态修改JTree,如果可能,我建议使用
DefaultTreeModel
作为模型来驱动视图


为了确保您已经通读了,是吗?

如何创建JTree?通过构建节点,然后直接从节点创建JTree。updateUI()用于动态更改外观,与重新绘制组件无关。结果表明,defaultTreeModel包含了我需要的所有函数。JTree只是没有提供任何有用的方法来获取它们。一旦我用一个模型制作了JTree并抓起模型,一切都很简单。太棒了!模型驱动是值得的。