提问者:小点点

JavaFX中的MouseEvent、ActionEvent和Event有什么区别?


我是JavaFX的新手,看到有不同类型的事件处理程序。JavaFX中的MouseEvent、ActionEvent和Event有什么区别?


共1个答案

匿名用户

Event是所有事件类型的超类。

示例事件类型有:

  • 按下键时生成的KeyEvents。
  • 由鼠标交互(如移动或按钮单击)生成的鼠标事件。
  • 还有很多。

事件不必只由JavaFX系统生成。如果您愿意,您可以发出和使用自己的自定义事件,但通常,大多数事件都是由JavaFX系统生成的。

ActionEvent是一种事件,它通常可以更轻松地编写代码并响应正在激活的内容。

通常会为单个操作生成多个事件。例如,如果您用鼠标单击按钮,除了ActionEvent之外,您还可以获得MOUSE_PRESSED、MOUSE_RELEASED和MOUSE_CLICKED事件。

如果您想响应按钮激活,您可以监听MOUSE_CLICKED事件,但不建议这样做。这是因为还有其他方法可以激活按钮,或者按钮可能被禁用,在这种情况下您不想对其执行操作。如果它是默认按钮,则ENTER键可以触发按钮,或者用户可以在专注于按钮时通过按SPACE来激活按钮。当按钮被键盘激活时,则没有关联的鼠标事件,因此不建议监听鼠标事件以激活鼠标。通常,您只想知道按钮已被激活,而不是导致它的原因,并且您不想自己监控所有可能导致激活的事件类型,以及在事件触发时实际发生激活的条件。

JavaFX提供了ActionEvent,无论用于激活它的方法如何,只要按钮被激活,它就会发出。这使您编写代码变得更加容易,因为您需要编写的只是button. setOnAction(event-

ActionEvent还用于许多似乎不值得或不需要创建特定类型事件的地方,例如在关键帧激活时的动画KeyFrame中。因此ActionEvents不仅仅用于处理按钮事件,还可以用于许多地方。