使用MVC模型在Java中更改视图

使用MVC模型在Java中更改视图,java,user-interface,model-view-controller,Java,User Interface,Model View Controller,所以我在网上读了很多关于MVC的书,并且在课堂上也学到了MVC,但我仍然在一个方面迷失了方向——改变和显示视图。我知道视图是GUI,它们将用户输入传递给控制器,但我很难理解以下内容的工作原理: 查看显示的 用户单击视图上的按钮 控制器收到通知,通知模型 模型告诉控制器显示视图B 控制器显示视图B 这里的最后两行是我不明白如何实现的。如果视图没有更改为另一个视图,我知道使用Observer/Observable接口来更新视图。但在我的例子中,有一个主屏幕和一个游戏屏幕,当用户单击主屏幕上的Pl

所以我在网上读了很多关于MVC的书,并且在课堂上也学到了MVC,但我仍然在一个方面迷失了方向——改变和显示视图。我知道视图是GUI,它们将用户输入传递给控制器,但我很难理解以下内容的工作原理:

  • 查看显示的
  • 用户单击视图上的按钮
  • 控制器收到通知,通知模型
  • 模型告诉控制器显示视图B
  • 控制器显示视图B
这里的最后两行是我不明白如何实现的。如果视图没有更改为另一个视图,我知道使用Observer/Observable接口来更新视图。但在我的例子中,有一个主屏幕和一个游戏屏幕,当用户单击主屏幕上的Play按钮时,我希望“视图”和GUI切换到游戏屏幕。我想使用两种不同的视图


为了实现这一点,我在构建代码时遇到了问题,我不知道将ActionEventListeners放在哪里

假设您只是切换视图,这就是顺序

  • 查看显示的
  • 用户单击视图上的按钮
  • 按钮控制器告诉视图显示视图B
  • 视图显示视图B
这个模型根本不涉及。其他控制器可以更改模型

在编写JavaSwing应用程序时,我要做的是

  • 视图可以从模型中读取值
  • 视图可能不会更新模型
  • 控制器将更新模型
  • 控制器可以重新验证/重新绘制视图

要查看真实Swing应用程序中模型/视图/控制器模式的示例,请参阅我的文章。

您的模型明确要求控制器提供另一个特定视图?如果是这样,那就不是这样做的。MVC的优点之一是,您可以切换视图以在同一个模型(如桌面或web ui)上工作。您可以发布相关代码吗?否则我们就只能在黑暗中拍摄了。我还在创建UML类图和序列图的阶段,所以我实际上没有任何代码。谢谢!这更清楚。当(我认为)模型根本不应该知道视图时,我不知道模型应该如何指定要显示的视图。@Mimi Sakarett:模型不知道视图。然而,视图了解模型。