ActionListener如何工作?

我知道如何使用动作侦听器并实现它们,但我想知道是否有人可以告诉我他们如何听取事件? 有某种投票机制吗?

动作侦听器使用Observer模式注册事件,并通过主事件循环通知它们注册的任何事件。 所以不,它不是一个轮询(拉)机制,而是相反的 – 一个(推)回调。 这是“不要打电话给我们,我们会打电话给你”编程的一个例子。 因为代码中的所有内容都运行在单个线程(事件循环)中,所以您不必担心在不同事件之间进行同步 – 因此您的代码是线程安全的。

有一个事件循环被实现到AWT的核心。 它接收所有事件并将它们发送给适当的侦听器。

该教程解释了它们如何工作得很好: http : //download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

我认为JComponent的UI实现将在用户与之交互时触发(调用)所有已注册的事件(我认为)。

例如,当用户单击JButton ,按钮(或它的ui或其他内部处理程序)将查找所有已注册的ActionListeners并调用其actionPerformed(...)方法。