2

我将JTree在我的 Java Swing 桌面应用程序中使用。我阅读MVC Design pattern并根据它,我们应该使用ModelSwing Components来将 a 的数据模型JComponent与其表示部分分开。

所以我的快速问题如下:

  • JTree(TreeModel newModel)

  • JTree(Object[] value)

  • JTree(TreeNode root)

  • JTree(Vector<?> value)

  • JTree(HashTable<?, ?> value)

在上述用于创建的选项中JTree

Q1。JTree(TreeModel newModel)应用MVC模式总是更好吗?

4

2 回答 2

7

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

因此,这是我的建议:

  • 对于快速原型,您可以考虑使用这些“模拟”构造函数
  • 对于“现实世界”的应用程序,甚至不要考虑它们,因为迟早会需要特定的事件发送(改变一个节点渲染,使树生长,......)
于 2010-03-11T10:06:14.170 回答
2

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

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

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

于 2010-03-11T10:18:21.383 回答