我有以下代码:
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);
}
}
}