2017-07-25 314 views
3

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

+0

您的问题被标记为JavaFX 2,因为您是JavaFX的新手,请确保您使用的是最新版本(当前是Java 8+),而不是过时的JavaFX 2版本。 – jewelsea

回答

3

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

样本事件类型有:

  • KeyEvents其中,当按下一个键产生的。
  • MouseEvents这是通过鼠标交互生成的,例如移动或按钮点击。
  • 还有更多。

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

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

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

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

JavaFX提供了ActionEvent,无论激活按钮的方法如何,该按钮都会被激活。这使您更容易编码,因为您需要编写的所有内容都是button.setOnAction(event -> handleButtonAction());

一个ActionEvent也用于很多地方,例如在关键帧被激活时在动画KeyFrame中创建特定类型的事件似乎不值得或不必要。所以ActionEvents不只是用来处理按钮事件,而是可以在很多地方使用。