【问题标题】:Design Issue: MVC model with Java CardLayout application设计问题:带有 Java CardLayout 应用程序的 MVC 模型
【发布时间】:2011-07-25 03:47:36
【问题描述】:

对不起,模糊的标题,我正在尝试布局一个应用程序,不幸的是我开始编码时没有遵循正确的 MVC 架构规则。我有一个具有以下结构的应用程序。

将 JPanel(“MainPanel”)添加为组件的 JFrame,并且 MainPanel 具有 CardLayout 结构。然后 MainPanel 有几个 JPanel 可以使用按钮、Jcombo Box 和 List 选项进行翻转。

我想使用这种结构来实现 MVC 模型,但我很难找到实现此目的的方法。到目前为止,我在其中创建了 GUI 组件并希望将其分离出来并为每个 JPanel 添加到 MainPanel 的控制器中都有我的所有 actionListener。有哪些方法可以设计这个程序,使我可以分离我的操作逻辑和数据访问,并且仍然保持 CardLayout 结构?

【问题讨论】:

  • 我不确定您是否提供了足够的信息以便轻松回答。这个问题非常广泛,给出的信息非常笼统。

标签: java model-view-controller swing jpanel cardlayout


【解决方案1】:

A Swing Architecture Overview 中所述,Swing 可分离模型架构意味着一个应用程序可能有多个模型。按钮和表格是常见的例子。 Actions 是封装组件功能以在菜单、按钮和其他控件中重用的便捷方式。您没有提供有关应用程序模型的太多详细信息,但您可能会考虑使用state pattern 来简化您的导航模型。这个answer 也可能提供一些见解。

附录:作为一个具体的例子,CardPanel 使用的导航模型完全隐含在组合的DefaultComboBoxModel 中。通过扩展该模型,您的视图可以将自己注册为侦听器,并在用户更改组合设置时适当地配置自己。例如,您的程序数据模型所需的值(相关视图也侦听该值)可能会突出显示以表示必填字段;或者对当前状态没有意义的控件可能被禁用或隐藏。

【讨论】:

  • 我想问的是 MVC 模型如何适应 CardLayout 应用程序,该应用程序将所有状态更改(视图)集中在一个地方。
  • 更新:stackoverflow.com/questions/2687345/… 非常有帮助。感谢您的链接。它让我继续前进,并希望能走上一条好的道路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多