相关疑难解决方法(0)

Java Swing中的控制器是什么?

我想以有意义的方式使用Swing将MVC设计应用于我的Java应用程序.因此我的问题是,如何在Java Swing中构建控制器?

我有两个选择:

  1. 每个组件侦听器都是一个自己的类,作为控制器包的一部分
  2. 每个组件侦听器都是视图包中的一个匿名类,它使用控制器方法将其调用委托给一个类.

这两种可能吗?这是一个偏好问题,还是明确界定?

java model-view-controller swing

12
推荐指数
2
解决办法
2万
查看次数

我可以使用哪种设计模式来显示对话框?

我有时会在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)

java model-view-controller design-patterns

11
推荐指数
1
解决办法
602
查看次数