根据我自己的研究,术语"事件处理程序"和"侦听器"似乎经常互换使用,有时可能意味着同样的事情。有些人(或框架)根据侦听器是实际观察某事的对象来区分它们,然后可能会在事件发生时调用事件处理程序过程。
无论如何,我对JavaFX感兴趣,我首先可以看到他们是如何摆脱Swing的,在Swing中,所有东西通常都是一个侦听器 - 事实上,我曾经认为Swing的侦听器包含一个或多个事件处理程序,这些事件处理程序将根据发生的事件运行。
在 JavaFX 中,有一些事件处理程序是观察事件并在它们所附加到的源生成事件时相应地运行的过程。
然后有"侦听"属性上的更改事件的更改侦听器。
尽管我知道两者的实现不同,但我会写下这样说,一般来说,如果我们想到"事件处理",那么说 ChangeListener 本质上是一个专门围绕侦听属性更改而设计的事件处理程序是否正确。然而,更一般地说,EventHandler 接口允许处理各种其他类型的事件,例如 ActionEvent、MouseEvent 等?
可以被认为是 EventHandler 的一个子集,但事实并非如此,因为如果您看到 ChangeListener 文档,您会注意到它没有实现 EventHandler 接口(ChangeListener 实现 WeakChangeListener,EventHandler 实现 WeakEventHandler);但是它们的用法是相似的。