【问题标题】:Changing Views in Java using MVC model使用 MVC 模型在 Java 中更改视图
【发布时间】:2015-07-03 03:00:57
【问题描述】:

所以我在网上阅读了很多关于 MVC 的内容并在课堂上了解了它,但我仍然迷失在一个方面 - 更改和显示视图。我知道视图是 GUI,它们将用户输入传递给控制器​​,但我很难思考以下如何工作:

  • 显示的视图 A
  • 用户点击视图 A 上的按钮
  • 通知控制器,告诉模型
  • Model 告诉 Controller 显示 View B
  • 控制器显示视图 B?!?

这里的最后两行是我不明白如何实现的。如果 View 没有更改为另一个 View,我知道使用 Observer/Observable 接口来更新 View。但在我的情况下,有一个主屏幕和一个游戏屏幕,当用户单击主屏幕上的播放按钮时,我希望“视图”和 GUI 更改为 GameScreen。我想使用 2 个不同的视图(我认为)。

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

【问题讨论】:

  • 您的模型明确要求控制器提供另一个特定视图?如果是这样,它不是这样做的方法。 MVC 的优点之一是您可以切换视图以在同一模型上工作(例如桌面或 Web ui)
  • 能贴出相关代码吗?否则我们会在黑暗中拍摄。
  • 我还在创建UML类图和序列图的阶段,所以我实际上还没有任何代码

标签: java user-interface model-view-controller


【解决方案1】:

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

  • 显示的视图 A
  • 用户点击视图 A 上的按钮
  • 按钮控制器告诉视图显示视图 B
  • 视图显示视图 B

完全不涉及模型。其他控制器可以更改模型。

在编写 Java Swing 应用程序时,我会这样做。

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

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

【讨论】:

  • 谢谢!这要清楚得多。当(我认为)它根本不应该知道视图时,我没有看到模型应该如何指示要显示的视图。
  • @Mimi Sakarett:模型不知道视图。然而,视图知道模型。
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多