在actionPerformed方法中使用控制器 - 需要是最终的吗?

时间:2015-09-20 22:33:22

标签: java model-view-controller

我正在玩MVC模式而且我被卡住了。

我的简单应用程序(你可以掷骰子)有一个MainView类,它创建并保存一些其他的视图,如ButtonPanelView(有按钮..)。 MainView由我的MainController创建。 MainController还有我的rollDice方法,它将调用diceModel类并更改值。

现在,我的rollDice Button位于ButtonPanelView中,也就是ActionListener所在的位置。我试图从actionPerformed方法中调用controller.rollDice(),但错误显示“从内部类中访问变量mainController,需要声明为final”。 我不知道该怎么做,因为我的this.mainController不能是final,因为它在Constructor中。这是我的代码:

public class ButtonPanelView extends JPanel{

    private MainController mainController;
    private JButton rollDiceBtn = new JButton("roll dice");
    private JPanel pan = new JPanel();

    public ButtonPanelView(MainController mainController){
        this.mainController = mainController;
        add(pan);
        pan.add(rollDiceBtn);

        rollDiceBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                mainController.rollDice();
            }
        });
    }
}

感谢您的帮助:)

0 个答案:

没有答案