java swing vs mvc:这种模式确实可行吗?

Cra*_*lus 10 java model-view-controller swing design-patterns jtree

我是新手,但设法创造了一个下降的gui.
我的问题是,我无法应用参考/教程中建议的模式,主要是MVC模式.

是我,还是在JTree中使用SwingWorker,是不是可以清楚地分离控制器/视图/模型?
例如,我使用Swingworker,但是我无法在设计中"适应"控制器.

即控件的动作本质上是在doBackground方法中,例如在按钮的动作执行中.
所以没有控制器类.

swing工作器中的操作结果是更新一个Jtree,所以我将结果传递给一个名为model的类,但是这个类必须能够访问JFrame里面的Jtree的treeModel,即视图,所以没有明确分离视图和模型.

我查看了很多教程,但是所有呈现MVC都有一个简单的例子,在大多数情况下,视图(只是一些标签!)更新了所有内容.我是否完全混淆,或者在使用swingworkers和jtree的swing应用程序中集成MVC模式是不可行的,或者至少不容易?

我在谈论实际的域数据,而不是在swing组件中实现的MVC.

有人可以帮助我(并避免让我摆脱这种可怕的头痛),或者概述一下如何处理这种设计,或者至少有一个教程,这是有用的,有一个非常重要的例子吗?

谢谢

ape*_*ins 7

当我构建更大的应用程序(人员多年的开发)时,我们经常将MVC架构抽象到单个组件之上,到顶层控制器/模型和视图,并接受各个组件将是他们自己的个性化MVC.GeoffreyZheng在他的评估中是绝对正确的,这是我真正喜欢用Swing环境开发的东西.话虽如此,如果你想要真正的MVC,你可能需要从单个组件中抽象出来,并用更抽象的术语来讨论一个视图.


Geo*_*eng 5

Swing不是严格意义上的MVC,因为该公司以前称为Sun 公开承认:

(传统的MVC分离)在实际应用中效果不佳,因为组件的视图和控制器部分需要紧密耦合(例如,编写一个不了解视图细节的通用控制器非常困难) .因此,我们将这两个实体合并为一个UI(用户界面)对象.

对于JTree,你有TreeModel,你猜它是模型.像JLabel这样的一些简单组件甚至没有模型.

正如链接进一步解释的那样,您确实可以通过LAF提供的UI类获得一定程度的分离.但是,Swing组件本身必须维护和控制许多与UI相关的属性.