【问题标题】:MVC Architecture and Modal Dialog WindowsMVC 架构和模态对话框窗口
【发布时间】:2012-09-18 13:07:13
【问题描述】:

我正在开发一个 MVC 架构中的项目。它应该是一个简单的应用程序来管理一些客户。

有 MainModel、MainView 和 MainController 类,它们使主窗口显示客户表的内容,并让用户插入、删除或编辑客户。

我的问题是插入和编辑按钮应该显示一些对话框窗口让用户插入和编辑一些文本值,我有一些疑问。

我想问你一些问题:

  • 我应该为每个对话窗口使用 MVC 架构吗?
  • 如果是,我尝试过这样做,但我的对话框窗口是模态的,所以我的代码运行模型,运行视图,但它在视图中被阻止并且它不运行控制器类。我该如何解决?

    例如,它在“new InsertCustomerController...”指令中被阻止:

        CustomerModel customerModel = new CustomerModel();
        InsertCustomerView insertCustomerView = new insertCustomerView(customerModel);
        new InsertCustomerController(insertCustomerView, customerModel);
    

非常感谢。

【问题讨论】:

  • 我唯一的想法是定义一个简单的方法来在他们的视图中将我的对话框窗口设置为模态并在控制器构造函数中调用它,但我不知道它是否可以。我什至不知道我是否应该在我的对话窗口中使用 MVC...
  • 如果不查看更多代码,很难判断发生了什么。 InsertCustomerView 和 InsertCustomerController 中有什么?尝试发布SSCCE。我很难理解您的问题以及到底是什么问题。
  • 您不一定需要多个控制器。控制器的目的是将事物路由到视图和模型。它实际上是从键盘到您的视图的桥梁。主控制器可以服务附加项目。另一种选择是扭转局面。创建一个新的控制器实例并创建模型和视图,视图代码将执行您“卡住”的对话框。
  • 附注:MVC 不是架构。这是一种设计模式。

标签: java swing model-view-controller modal-dialog


【解决方案1】:

无论使用何种模式,您都可以使用observer pattern 使您的对话框与应用程序的模型保持同步。这个example 使用PropertyChangeListener;提到了其他方法here

【讨论】:

    【解决方案2】:

    虽然我无法从您的帖子中完全看出,但我不确定您是否以正确的方式考虑 MVC。但是,假设您有一个 Customer、CustomerView 和 CustomerController 类..

    客户可以包含与成为客户相关的所有业务逻辑——因此它可能具有 setBalance(int newBalance)、getBalance() 等方法。

    CustomerView 类本质上可以是 JPanel 或 JFrame 的子类(因为看起来您正在使用问题标签中的 Swing)。此类将代表一个客户实例。也许你可以有一个 private Customer 类变量。此类的职责应仅包括向包含在其 Customer 实例中的用户显示数据以及允许他们对其进行修改。

    很难说 CustomerController 会做什么,因为我对您的应用程序一无所知,但它可能包含 ActionListener 以及有助于将输入和输出路由到模型的不同部分的东西并查看。

    我做了一些谷歌搜索,发现了一个您可能想查看的非常简单的示例:http://www.austintek.com/mvc/

    祝你好运。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多