【问题标题】:Using Java TreeModel使用 Java 树模型
【发布时间】:2013-05-23 13:31:47
【问题描述】:

我知道这里有人问过这个问题:Java tree data-structure?

但是在 Java 中实现树的最佳实践是什么?上面链接的问题中投票第二多的答案提到了 TreeModel,但在 cmets 中,有人说这样做不是好的编码习惯。这有任何道理吗? (我不明白摇摆与非摇摆)使用 TreeModel 是常见的做法吗?

【问题讨论】:

  • Java tree data-structure?的可能重复
  • Swing 是一个用户界面工具包,而 TreeModel 是该工具包的一部分。与任何单个 UI 工具包的零耦合更有可能导致代码可移植。树形数据结构足够简单,使用 Swing 没有明显优势。
  • 我是否在问题中提到了该帖子是否有影响?
  • 上一个问题似乎已经完全解决了这个问题。但这确实有不同的重点,所以我可能弄错了。

标签: java data-structures tree treemodel


【解决方案1】:

你提到的评论说:

我会避免在非 Swing 相关的函数上使用 Swing 库。这是不好的编码习惯。你永远不知道 Swing 如何实现它们的树,它们的依赖关系是什么,以及这在未来会如何改变。 Swing 不是实用程序库,而是 UI 库。

根据我的经验,Swing 是一个复杂的 UI 工具包,但所有的 model classes,如 TreeModelTableModel 都是为了支持跨平台 UI 而量身定制的。也许model这个名字暗示了这些封装了这些数据结构的独立内部工作——但是像ButtonModel这样的类的存在告诉我,所有这些类更多地是为了支持MVC模型。

来自docs

那么模型为什么存在呢?最大的原因是它们让您灵活地决定如何存储和检索数据。例如,如果您正在设计一个电子表格应用程序,该应用程序在一个人口稀少的表格中显示数据,您可以创建自己的表格模型,并针对此类用途进行了优化。

【讨论】:

    【解决方案2】:

    TreeModel 和 TreeNode 用于实现 Swing 的可视化 Tree 组件的模型。例如,您可以在他们的包裹javax.swing.tree 上看到这一点。您应该只将它们用于它们的设计(与 UI 相关的东西,请参阅 Javadocs),并且不要将它们用作数据结构。这就是你提到的这条评论所说的。这是绝对正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 2011-11-23
      • 2014-08-16
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多