我试图在我的程序中实现MVC,这是目前我的控制器类:
public class Controller {
private DatabaseModel model;
private View view;
public Controller(View view, DatabaseModel model){
this.model = model;
this.view = view;
this.view.getMainPanel().getCandidateForm().
addSubmitListener(new CandidateListener());
}
class CandidateListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("ACTION");
}
}
}
因为我的视图包括几个私有子JPanels-MainFrame和CandidateForm-后者是按钮所在的位置,所以在第10行,我将候选表单面板返回给控制器,然后调用它的addSubmitListener()方法,该方法将自定义侦听器添加到按钮中。
这似乎是添加侦听器的正确方法吗?我应该在Controller中以这种方式定义CandidateListener吗?或者在子JPanel中创建一个匿名类?
对于MVC和听众的最佳实践的任何其他建议也将不胜感激!
正如这里所指出的,“并非每个交互都需要通过应用程序的控制器。”你的方法没有错,但它可能扩展不佳。考虑使用Action
来封装功能,如这里所建议的。在数据库上下文中,这个简单的示例创建了一个Action
,它将查询结果选项卡添加到JTabbedPane
。这个更复杂的示例使用SwingWorker
在后台查询数据库;相应的Action
可能会实例化worker并执行()
它。