我想以有意义的方式使用Swing将MVC设计应用于我的Java应用程序.因此我的问题是,如何在Java Swing中构建控制器?
我有两个选择:
这两种可能吗?这是一个偏好问题,还是明确界定?
我有时会在Java应用程序中显示Dialog框.
目前,Controller类是(期望在我的模型上只调用getter的一些例外),就像我的模型和UI之间的调解器一样.
但我的UI知道我的控制器,我的控制器知道我的UI.
每当我添加一个新对话框时,我都会在控制器和视图类中添加一个方法.
有没有更优雅的方法通过使用设计模式扩展我的程序与新用户对话框?
为了说明我的交互现在看起来如何,我将附加一些代码片段.
我的UI代码
itmEmailSettings.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controller.showEmailSettingsDialog();
}
} );
Run Code Online (Sandbox Code Playgroud)
更多UI代码
public void showEmailSettingsDialog(String host, int port, int authMode,
String user, String pass, String fromEMail, String fromName) {
EmailSettingsDialog d = new EmailSettingsDialog(
host, port, authMode,
user, pass, fromEMail, fromName
);
d.createJDialog( mainFrame.getFrame() ).setVisible(true);
if(d.isValid()){
controller.changeEmailSettings( d.getHost(), d.getPort(), d.getAuthMode(), d.getFromEMail(), d.getFromName(), d.getUser(), d.getPass() );
}
}
Run Code Online (Sandbox Code Playgroud)
控制器代码:
public void showEmailSettingsDialog() {
try{
if(!pm.hasProjectFileAccess()){
mainFrame.showNoProjectfileAccess();
return;
}
ProgrammSettingsRepository pr = …Run Code Online (Sandbox Code Playgroud)