我已经阅读过关于MVC的内容,但我对如何使用Swing在Java中实现这个概念表示怀疑。这就是我想要的:
模特:
ListOfThings
包含Collection
个Thing
个对象。
控制器:
Controller
实例ListOfThings
并使用“添加”方法填充它(在内部创建新的Thing
并将其添加到Collection
)
观点:
带有ListOfThingsPanel
的Swing界面,其中包含ThingPanel
个组件来表示模型。两者都延伸JPanel
。 ThingPanel
包含用于显示与其关联的Thing
数据的各种组件。
它还有一个按钮,可以在列表中添加一个新的(空的)东西。
点击事件会调用Controller
的{{1}}方法,要求addThing()
将新的ListOfThings
添加到其列表中。 Thing
有一个事件/侦听器系统,ListOfThings
会监听它以了解它应该何时刷新视图。
我是否通过这样做正确地遵循MVC概念?
更新 我还在学习Java,但我有编码经验,宁愿学习理论并在使用预制框架之前通过自己的方式尝试。虽然我知道Swing实现了MVC模式,但我已经读过它以特定的方式(视图和控制器组合)完成它可能不是最好的并且在其他情况下不适用。我有点谨慎,直到我能确保“Swing MVC”与“MVC”没有什么不同,或者这些差异不会影响我对基本思想的理解。
对我来说有一点重要的是学会真正将模型与视图分开,以便最终创建各种类型的各种视图(例如,Swing但也可以控制台或更新到JavaFX)这就是为什么我喜欢避免在视图部件本身外部特定的Swing。
答案 0 :(得分:2)
虽然Swing框架已经实现了一种形式的MVC(显式模型; JXyz和UI类=控制器和视图),但这种严格的分离很少在应用程序级别上使用,看起来很奇怪。
首先,我建议遵循以下设计:
如果您想更进一步,请使用RCP,例如NetBeans平台(非常推荐)。
修改强>
以下是Swing中解释MVC的文章:
http://www.oracle.com/technetwork/java/architecture-142923.html