我正在练习MVC风格的编程.我在一个文件中有一个Mastermind游戏,工作正常(可能除了"Check"按钮在开始时不可见).
http://paste.pocoo.org/show/226726/
但是当我把它重写为模型,视图,控制器文件时 - 当我点击空Pin(应该更新,并重新绘制新颜色)时 - 注意到了.谁能在这里看到任何问题?我尝试在不同的地方放置repaint(),但它根本不起作用:/
主要:
public class Main {
public static void main(String[] args){
Model model = new Model();
View view = new View("Mastermind", 400, 590, model);
Controller controller = new Controller(model, view);
view.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
型号:
import java.util.Random;
public class Model{
static final int
LINE = 5,
SCORE = 10, OPTIONS = 20;
Pin pins[][] = new Pin[21][LINE];
int combination[] = new int[LINE];
int curPin = 0;
int turn = 1;
Random generator = new Random(); …Run Code Online (Sandbox Code Playgroud) 我认为最难以真正掌握"真实SWING生活"的设计模式之一是MVC模式.我已经浏览了这个讨论模式的网站上的一些帖子,但我仍然觉得我不清楚如何利用我的(Java SWING)应用程序中的模式.
假设我有一个包含表格,几个文本字段和几个按钮的JFrame.我可能会使用TableModel将JTable与基础数据模型"桥接".但是,负责清除字段,验证字段,锁定字段以及按钮操作的所有函数通常都直接在JFrame中.但是,是不是混合了Controller和View的模式?
据我所见,我设法在查看JTable(和模型)时"正确"实现了MVC模式,但是当我整个看整个JFrame时,事情变得混乱.
我真的很想听听别人对此的看法.当你需要向用户显示表格,几个字段和一些按钮(使用MVC模式)时,你如何去做?
我正在Swing中实现一个程序,我在Swing中阅读了Nirmal对这种模式的实现,这似乎表明了对整个"职责分离"概念的相当优雅的处理.
但是,由于我正在开发一个比Nirml发布的更复杂的程序,它由一个JFrame容器组成,我寻求指导如何正确实现MVC.
我的程序将由子容器等组成.我很好奇Controller应该如何实现定义和分配View的所有侦听器的逻辑?或者如果为每个View组件定义侦听器的控制器是否实用?
看来我在View的顶级容器中需要一个方法来允许Controller调用视图来向相关组件添加一个Listener?所以我需要一个方法链,每个方法都将侦听器从顶层容器传递到持有组件的直接容器.最后用容器调用addActionListener()就可以了.
这是在MVC中处理侦听器的正确方法吗?
是否在MVC中强制控制View中每个组件的所有侦听器,或者是一种有用的实践?这也意味着我在顶级容器(View)中创建方法,以便为Controller提供一种方法,将侦听器分配给子容器中的每个组件?