我是JavaFX的新手,看到有不同类型的事件处理程序。JavaFX中的MouseEvent,ActionEvent和Event有什么区别?
Event是所有事件类型的超类。
示例事件类型有:
事件不必仅由 JavaFX 系统生成。如果您愿意,您可以发出和使用您自己的自定义事件,但通常大多数事件是由 JavaFX 系统生成的。
一个动作事件是一种事件,往往更容易代码和响应的东西被激活。
通常一个动作会产生多个事件。例如,如果您用鼠标单击按钮,除了 ActionEvent 之外,您还可以获得MOUSE_PRESSED、MOUSE_RELEASED和MOUSE_CLICKED事件。
如果您想响应按钮激活,您可以监听 MOUSE_CLICKED 事件,但不建议这样做。这是因为还有其他方法可以激活按钮,或者按钮可能会被禁用,在这种情况下您不想对其采取行动。如果是默认按钮,则 ENTER 键可以触发该按钮,或者用户可以在关注按钮时按 SPACE 激活该按钮。当按钮被键盘激活时,则没有关联的鼠标事件,因此不建议为鼠标激活监听鼠标事件。通常,您只想知道该按钮被激活而不是导致它的原因,而您不知道
JavaFX 提供了每当按钮被激活时都会发出的 ActionEvent,无论用于激活它的方法如何。这使您更容易编码,因为您只需要编写button.setOnAction(event -> handleButtonAction());.
ActionEvent 也用于许多看起来不值得或不需要创建特定类型事件的地方,例如在关键帧被激活时的动画 KeyFrame 中。所以ActionEvents不仅仅用于处理按钮事件,还可以用在很多地方。