Java Swing MVC / Observer:GUI未更新

时间:2016-10-16 14:59:21

标签: java swing user-interface model-view-controller observer-pattern

我正在使用MVC / Observer模式构建Java程序,并设法在我的View(Observer)类中获取更新方法,记录我的Model(Observable)类的更改。下面的前3个组件是JTextFields,它们被正确设置为更新的String。

public void update(Observable o, Object arg) {

    textPlayer1.setText(model.getPlayerX().getName());
    textPlayer2.setText(model.getPlayerO().getName());
    textTurn.setText(model.determineTurn().getName());
    frame.repaint();

}

然而,尽管甚至在包含框架上调用repaint(),GUI根本没有更新 - 即使调用getText()显示更新的值,显示的文本字段仍为空白。这里的问题是什么?

从我的View(Observer)类中提取:

public Connect4View(Connect4Game model, Connect4Controller controller) {

    this.model = model;
    model.addObserver(this);
    this.controller = controller;
    createGameWindow();
    controller.setView(this);
    update(model, null);

}


private void createGameWindow() {
    frame = new JFrame("CONNECT FOUR");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    createStatsPanel();
    createGamePanel();
    createButtonPanel();

    frame.getContentPane().add(statsPanel);
    frame.getContentPane().add(gamePanel);
    gamePanel.add(buttonPanel);

    frame.setBounds(100, 100, 750, 450);
    frame.getContentPane().setLayout(null);
    frame.setResizable(false);
    frame.setVisible(true);
}

GUI截图供参考: GUI

非常感谢任何帮助!

0 个答案:

没有答案