【问题标题】:Java- updating JTreeJava-更新JTree
【发布时间】:2011-03-28 11:33:24
【问题描述】:

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

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

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

【问题讨论】:

  • 你是如何创建 JTree 的?
  • 通过构建节点,然后直接从它们创建 JTree。
  • updateUI() 用于动态更改外观,与重新绘制组件无关。

标签: java swing jtree


【解决方案1】:

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

为了确保您已经阅读了the Sun JTree tutorials,对吧?

【讨论】:

  • 原来 defaultTreeModel 包含了我需要的所有功能。 JTree 只是没有提供任何有用的方法来解决它们。一旦我从模型中制作了 JTree 并抓取了模型,一切就变得简单了。
  • 太棒了!模型驱动是值得的。
猜你喜欢
  • 1970-01-01
  • 2011-04-18
  • 2012-06-22
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
相关资源
最近更新 更多