【问题标题】:Java Swing - Should JTree be used with TreeModel - MVC design patternJava Swing - JTree 是否应该与 TreeModel 一起使用 - MVC 设计模式
【发布时间】:2010-03-11 10:01:13
【问题描述】:

我将在我的 Java Swing 桌面应用程序中使用 JTree。我读到了MVC Design pattern,根据它,我们应该使用Swing ComponentsModel 类将JComponent 的数据模型与其表示部分分开。

所以我的快速问题如下:

  • JTree(TreeModel newModel)

  • JTree(Object[] value)

  • JTree(TreeNode root)

  • JTree(Vector<?> value)

  • JTree(HashTable<?, ?> value)

在以上用于创建JTree 的选项中,

第一季度。使用JTree(TreeModel newModel) 应用MVC 模式总是更好吗?

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    这取决于您的需求。我倾向于认为将非模型对象作为输入的 Swing 组件构造函数实际上是快速原型设计的捷径。实际上,在幕后,Swing 组件将从输入对象创建一个模型,因为它需要一个模型对象来正确发送所有事件。

    因此,这是我的建议:

    • 对于快速原型,您可以考虑使用这些“模拟”构造函数
    • 对于“现实世界”应用程序,甚至不要考虑它们,因为迟早会需要发送特定事件(更改一个节点渲染,使树生长,...)李>

    【讨论】:

      【解决方案2】:

      正如 Riduidel 所说,JTree 内部总是使用 TreeModel,所以其他构造函数实际上只是为了方便。

      还有 setModel(JTree) 方法,它将设置(和替换)模型。在一个重要的应用程序中,您可能希望在填充数据之前构建框架及其组件。

      我不认为任何构造函数是非 MVC。在这方面更重要的是,您让负责数据、UI 和逻辑的代码尽可能独立且不依赖。这使您可以更好地对代码进行单元测试,并且有助于提高灵活性和可重用性。

      【讨论】:

      • 我觉得你的方法很有趣......你经常在没有加载模型的情况下创建小部件吗? (纯粹的好奇问题)从我的角度来看,我发现最好使用其关联模型创建小部件(即使我最终在加载并显示小部件后将数据放入模型中)而不是在组件视图期间交换模型,这 可能会引入一些闪烁。
      • 是的,我开发了数据库支持的应用程序,因此等待数据加载需要很长时间。我们构建框架,然后在数据加载时交换模型(或者可能只是添加项目)。我声称这是最好的解决方案,但它对我们有用。
      • 哎呀,我并不是说这是最好的解决方案
      猜你喜欢
      • 2012-01-06
      • 2014-10-17
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多