繁体   English   中英

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

[英]What is the difference between MouseEvent, ActionEvent and Event in JavaFX?

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

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

示例事件类型包括:

  • 按下键时生成的KeyEvent
  • 通过鼠标交互生成的MouseEvents ,如移动或按钮单击。
  • 还有更多。

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

ActionEvent是一种事件,通常可以更容易地编码并响应被激活的内容。

通常会为单个操作生成多个事件。 例如,如果单击带鼠标的按钮,除了ActionEvent之外, 可以获得MOUSE_PRESSEDMOUSE_RELEASEDMOUSE_CLICKED事件。

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

JavaFX提供ActionEvent,无论激活它的方法如何,只要激活按钮就会发出该ActionEvent。 这使您可以更轻松地进行编码,因为您需要编写的所有内容都是button.setOnAction(event -> handleButtonAction());

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM