我在一个程序中有一个主类,它启动另一个处理所有 GUI 内容的类。 在 GUI 中,我有一个需要附加 ActionListener 的按钮。
唯一的问题是,要执行的代码需要驻留在主类中。
当在其他地方单击按钮时,如何在主类中执行 ActionPerformed() 方法?
最佳答案
让您的 Controller (“主”类)实现 ActionListener 接口(interface),然后传递对 View 类的引用:
public class View extends JFrame {
public View(final ActionListener listener) {
JButton button = new JButton("click me");
button.addActionListener(listener);
button.setActionCommand("do_stuff");
getContentPane().add(button);
pack();
setVisible(true);
}
}
public class Control implements ActionListener {
public Control() {
new View(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("do_stuff")) {
// respond to button click
}
}
}
也可以用 Actions 来完成,但是当您希望一段代码响应多个按钮时,这更有用。
关于Java 简单 ActionListener 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2406547/