java - ActionListener 没有响应 [示例]

标签 java swing model-view-controller actionlistener

我将 ActionListener 类作为参数实现,但没有响应。

我正在使用 MVC 模式并在其他 Controller 中调用 Controller 。 我已经创建了程序的简化版本(仍然无法正常工作)。

我有一个带有一个按钮的框架,按下该按钮会在控制台中打印。

public class MainFrame extends JFrame {

    private JButton button = new JButton("Print");

    public MainFrame() {
        setSize(200, 100);

        this.add(button);

        setLocationRelativeTo(null);
        this.setDefaultCloseOperation(MainFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void validateButton(ActionListener e) {
        this.button.addActionListener(e);
    }
}

这是操作

public class ValidateAction implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("It works!");
    }

}

我在 EditController 中调用此操作

public class EditController {

    private MainFrame mf = new MainFrame();

    public EditController(MainFrame mf) {
        this.mf = mf;

        this.mf.validateButton(new ValidateAction());
    }

}

我在 MenuController 中调用这个 EditController

public class MenuController {

    public MenuController(MainFrame mf) {

        this.makeEditController(mf);
    }

    public void makeEditController(MainFrame mf) {
        new EditController(mf);
    }

}

我在主 Controller 内部调用 MenuController

public class Controller {

    public Controller(MainFrame mf) {

        this.makeMenuController(mf);
    }

    public void makeMenuController(MainFrame mf) {
        new MenuController(mf);
    }

}

最后我在主类中调用所有内容

public class Main {

    public static void main(String[] args) {
        MainFrame mf = new MainFrame();
        new Controller(mf);
    }

}

而且它不起作用......

最佳答案

您正在创建 MainFrame 两次。见评论:

class EditController {

    private MainFrame mf; //= new MainFrame();

    public EditController(MainFrame mf) {
        this.mf = mf;
        this.mf.validateButton(new ValidateAction());
    }
}

关于java - ActionListener 没有响应 [示例],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018825/

相关文章:

php - 您如何在 MVC 中构造和路由模块?

java - 启用 stomp 后的 activemq oom

java - 通过设置 CardLayout 获取注册到 JPanel 的确切 JPanel

php - 在 MVC 架构中,哪里最适合创建 session ?

java - 与 java swings 中的 JList 类似的数据结构,可在 java FX 中使用

具有多线程的 Java Swing

Angular 4 Reactive Form - 显示值

java - 我的功能有逻辑错误吗?

java - 使用相应的按钮 Java 完全临时禁用一个键

java - JDBC插入语句不起作用