[英]Using ActionListener within a Controller in a MVC setup
我正在为任务编写代码,我需要遵循模型-视图-控制器设计模式来创建基本游戏。 游戏涉及一个8x8的JButton阵列,需要按特定顺序选择/取消选择这些按钮才能获胜。
据我所知,声明和实例化每个JButton并添加actionListener的循环应该在View类中找到,而附加到每个JButton的ActionListener实际上应该触发Model类或Controller类中的EventHandler(因为根据MVC,我不应该在View中编写我的EventHandler逻辑)。 这造成了一个问题,因为除非我将ActionListeners从我的Model或Controller类中附加到每个JButton,否则Model或Controller类中的EventHandler不会触发。
解决此问题的常用方法是什么? 我应该如何安排getter和setter在类之间传递ActionEvent? 我可以从View类的EventHandler中调用Controller或Model EventHandler吗? 最后,EventHandler是否属于Model类或Controller类?
任何帮助将非常感激!
我不了解规范的解决方案,因为我既不是专业人员,也不是院士,而是可能的解决方案:
因此,例如,如果您接受上面的第三条建议,则您的视图可能具有以下内容:
// public method inside of View that Control calls
public void addActionToActionBar(Action action) {
JButton button = new JButton(action);
// actionBar would be a JPanel that holds a certain type of button
actionBar.add(button);
}
然后, for
创建按钮的for
循环可以全部位于Control类中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.