Java 简单 ActionListener 问题

标签 java user-interface events actionlistener

我在一个程序中有一个主类,它启动另一个处理所有 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/

相关文章:

iphone - 使用 EKEventEditViewController 创建带有闹钟的日历事件

java - 为什么 IntelliJ Idea 找不到另一个 Kotlin 模块的 Maven 依赖项?

android - ViewPager 在屏幕旋转后重新实例化无序的项目

java - 将代码作为参数传递

c - 如何使用c在终端上实现 "text editor"风格的界面

python - 等待按钮点击

javascript - 你如何记录由 jQuery 中的元素触发的所有事件?

JavaScript 事件队列

java - 服务器返回 HTTP 响应代码 : 400

java - 检查java变量是否为null,如果是则设置它