Java绘图MVC

时间:2013-11-16 07:46:46

标签: java swing model-view-controller jpanel

我正在尝试使用几种设计模式/原则在java中创建游戏。其中一个是MVC。情况是这样的: 型号:拥有所有游戏逻辑 控制器:按钮交互和GameElements列表(参见代码) 查看:所有GUI内容,包括绘图。

现在,我的游戏对象都位于模型下,但对于我的绘图,我尝试过这样做(在paintComponent中)

ArrayList<GameElement> ge = FieldController.getElements(); // This is located under Controller
for(GameElement ge: GameElements)
{
graphics.setColor(ge.getColor());
graphics.fillRect(ge.x,ge.y,ge.width,ge.height);
}

哪个有效,但我的问题是:GameElements的ArrayList应该保存在哪里? 将它保存在控件中可以吗?还是应该保留在视图中? 我很确定它不应该放在模型中,因为View&amp; Model会过于紧凑。

1 个答案:

答案 0 :(得分:4)

您的List<GameElement>属于模型。收到通知后,监听视图应决定如何呈现元素。在这种情况下,松耦合的概念是指通知;视图仍然必须解释它从模型中学到的东西。在此简化的example中,模型管理具有颜色属性的抽象Piece。显示的GUI视图将此属性呈现为具有指定颜色的Icon。相反,文本视图可能会将属性呈现为String