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