【问题标题】:basic MVC pattern and GUI基本 MVC 模式和 GUI
【发布时间】:2012-11-01 22:00:06
【问题描述】:
我想请教小费。如果您有一个 JFrame,其中包含许多 JPanel,其中有十个 JTextFields 标签和一个编辑按钮,您将如何构建您的应用程序。
您是将所有代码都放在 JFrame 中,还是从 JPanel 扩展并将所有代码包含在 JFrame 中?
按钮呢?我想使用 MVC 模式,你将如何处理动作监听器?他们每个人都是自己的控制器,还是您只为所有这些人使用一个控制器?
【问题讨论】:
标签:
java
swing
model-view-controller
user-interface
jcomponent
【解决方案1】:
我认为这首先是风格和个人喜好的问题。它还取决于您的应用程序应该做什么以及如何做。
如果您的 JPanel 在某些方面都非常相似,那么从 JPanel 扩展可能是有意义的。例如,如果每个面板有 10 个按钮,其中按钮 1 总是对其相应的模型对象执行 xyz()(尤其是当此对象对于 1 个 JPanel 的所有按钮都相同时)并且按钮 2 执行 abc() ...
如果 JPanel 没有以这种方式强相关,我会将我的代码放在 JFrame 或第三个对象中,从外部设置整个 GUI。
动作监听器也类似。如果您的操作很少,我可能会只选择一个控制器对象以方便使用(文件不多)。如果您有很多不同的操作,我会将类似的操作分组到每组操作一个控制器对象中。
也就是说,最好从一种简单的方法 (YAGNI) 开始,在这种方法中,您从 JFrame/第三个对象开始做所有事情,并拥有一个动作侦听器,然后在您觉得将事物拆分为您提供更清晰或更灵活的设计时进行重构.