我有以下代码:

JButton button = new JButton("Clear");
button.addActionListener(this);

据我了解,我创建了一个按钮,上面写着“清除”。然后,我必须将一个 Action 与此按钮关联(如果按下该按钮会发生什么),并由addActionListener完成。这样对吗?

但是我不明白的是在哪里指定了 Action 。按下按钮应清除文本区域,据我所知,应该在某处有代码可以清除文本区域。但是在给定的示例中, addActionListener() 的参数中仅包含“this”。

程序如何知道按下按钮时应清除文本区域?

如果需要,则将完整代码提供给here

最佳答案

ActionListener 是一种回调机制。只要添加了控件的控件触发ActionEvent,就会调用public void actionPerformed(ActionEvent e)方法。



这由UI组件的内部机制调用。从概念上讲,您可以认为代码看起来像这样:

public class Button {
  private final List<ActionListener> listeners = new ArrayList<ActionListener>();

  public void addActionListener(ActionListener l) {
    listeners.add(l);
  }

  public void click() {
    ActionEvent event = new ActionEvent(this, 0, "click");
    for (ActionListener l : listeners) {
      l.actionPerformed(event);
    }
  }
}

09-26 21:04
查看更多