MVC和JFrames

时间:2014-12-26 12:44:51

标签: java swing model-view-controller view jframe

我目前正在使用MVC模式将卡片游戏实现到java中,但我对视图有很多困难。事实上,我有很多模型类和很多视图(Observable模型的观察者),如“播放器”,“Deck”,“Card”,“Game”等...

为了拥有一个图形用户界面,我问我是否应该只使用一个JFrame(但在这种情况下,所有视图如何作用于同一个JFrame?)或创建多个JFrame,例如每个视图扩展JFrame?这是我第一次使用MVC模式,它对我来说仍然很模糊:/

2 个答案:

答案 0 :(得分:1)

单帧就足够了。事实上,一个视图(Deck extends JPanel)可以包含多个另一个视图(Cards扩展JPanel),提供布局和委托给绘画和事件处理。

答案 1 :(得分:0)

Game,Player,Deck和Card是模型类。我假设一个游戏可以有一个或多个玩家,游戏可以有一个或多个套牌,而牌组可以有一张或多张牌。

您有一个JFrame,带有一个或多个JPanel,代表游戏表。游戏桌将在适当的时间显示玩家卡牌,并保持得分。

在Java Swing应用程序中,您可以通过以下方式实现模型/视图/控制器模式。

  1. 视图可以从模型中读取值。
  2. 视图可能不会更新模型中的值。
  3. 控制器将更新模型中的值,并可能重新验证/重新绘制视图。
  4. 通常,不是一个控制器类。有许多小型控制器类可以处理视图的一部分和模型的一部分。

    有关更完整的示例,请阅读我的2048 Game in Java Swing文章。它不是卡片,但你可以看到MVC片段如何组合在一起。