如何在MVC Java中实现我的代码?

时间:2012-04-14 13:07:28

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

我正在制作一款将在其中实施三款游戏的游戏。我在单个类中启动了我的代码,现在我想把它转移到MVC格式我有错误。我开始编写GameView Class中的所有代码,我现在想将这个类中的一些代码移动到SView类。问题是我在GameView类中初始化了JFrame,当我将代码移动到SView类时,它找不到变量框架。所以我被告知要把它变成一个面板然后移动它但它只是弄乱了我的游戏。

2 个答案:

答案 0 :(得分:1)

你必须以不同的方式组织事情。有些事情需要考虑:

  • GameView是您的主窗口吗?这样做GameView extends JFrame
  • SView是一个小组吗?这样做SView extends Panel

需要考虑的另一件事:SView是您要添加到GameView的某个面板,但SView添加本身并不负责。相反,只需在这两个类之外的某个地方实例化和组装这些组件,例如:

GameView gameView = new GameView();
gameView.add(new SView());

您也可以GameView在其构造函数代码中添加new SView()

无论如何,这里的要点是组件不应该将自己添加到其父组件,只需创建自己的内容/子组件即可。

祝你好运。

答案 1 :(得分:1)

一些建议:

  • 主GUI将使用CardLayout,因此您可以轻松交换JPanel。
  • 选择游戏菜单的主要功能是交换JPanels,因此所选游戏可视化,然后初始化所选游戏。
  • 单独处理每个游戏。为每个单独的游戏类制作一个JPanel来保持游戏。为每个游戏类提供一个主要的测试方法,即创建一个JFrame,创建一个游戏类实例,将实例的JPanel放入JFrame,初始化游戏并显示它。
  • 一旦游戏独立运行,请尝试将其添加到更大的GUI中,即可以显示多个游戏的GUI。
  • 考虑让每个游戏类实现通用功能的通用接口。例如,您可以为接口提供每个游戏类将覆盖的initialize()方法。
  • 每个游戏类都需要基于MVC,以便它有一个模型,一个与模型交互的控件类,以及一个在JPanel上显示模型状态的视图类,如上所述。 / LI>