【问题标题】:What is the difference between MouseEvent, ActionEvent and Event in JavaFX?JavaFX 中的 MouseEvent、ActionEvent 和 Event 有什么区别?
【发布时间】:2017-07-25 21:26:54
【问题描述】:

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

【问题讨论】:

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

标签: java javafx


【解决方案1】:

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不仅仅用来处理按钮事件,还可以用在很多地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2021-04-03
    • 2019-05-09
    相关资源
    最近更新 更多