我正在玩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();
}
});
}
}
感谢您的帮助:)