【发布时间】:2014-03-07 16:14:57
【问题描述】:
我有一个疑问。我不知道在模式 MVC 中插入每个事件侦听器的位置。将它们插入控制器中是正确的还是直接在视图中插入事件监听器更好?并且从视图中事件监听器可以调用控制器来做某事。
【问题讨论】:
-
在控制器中比较好,从视图事件监听器可以调用控制器但是有可能出现一些混合错误。
标签: java swing user-interface model-view-controller
我有一个疑问。我不知道在模式 MVC 中插入每个事件侦听器的位置。将它们插入控制器中是正确的还是直接在视图中插入事件监听器更好?并且从视图中事件监听器可以调用控制器来做某事。
【问题讨论】:
标签: java swing user-interface model-view-controller
您的事件监听器应该在控制器中。控制器拥有视图的一个实例,并且您的视图具有设置 GUI 控件(JTextField 等)的事件侦听器的公共方法。
示例:您有一个视图,其中包含一个名为 buttonSubmit 的 JButton 控件,并且您希望在有人与该按钮交互时进行监听。
查看
public void addSubmitButtonListener(ActionListener listener) {
buttonSubmit.addActionListener(listener);
}
控制器
public void run() {
view.addSubmitButtonListener( new SubmitButtonListener() );
}
class SubmitButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent evt) {
// What happens after someone interacts with the button goes in here.
}
}
SubmitButtonListener 类作为内部类直接进入控制器。
【讨论】: