繁体   English   中英

ActionListener没有响应[示例]

[英]ActionListener not responding [example]

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

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

我有一帧带有一个按钮,按下该按钮可在控制台中打印。

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);
    }

}

我在主控制器内部调用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());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM