[英]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.