JavaFX Event事件处理
JavaFX 使我们能够灵活地创建各种类型的应用程序,例如桌面应用程序、Web 应用程序和图形应用程序。在现代应用程序中,用户在应用程序的正确执行中起着至关重要的作用。在大多数情况下,用户需要与应用程序进行交互。
在 JavaFX 中,只要用户与应用程序节点交互,就会发生一个事件。用户可以使用各种来源来生成事件。例如,用户可以使用鼠标或按下键盘上的任何按钮或滚动应用程序的任何页面以生成事件。因此,我们可以说事件基本上是告诉我们在用户端发生了某些事情的通知。
完美的应用程序是处理事件所需时间最少的应用程序。教程的这一部分 本教程的这一部分描述了在 JavaFX 中处理事件的方式。
事件类型
一般来说,事件主要分为以下两种类型。
1. 前台事件
前台事件主要是由于用户与应用程序 GUI 的直接交互而发生的。例如单击按钮、按下一个键、从列表中选择一个项目、滚动页面等。
2. 后台事件
后台事件不需要用户与应用程序的交互。这些事件主要发生在操作系统中断、故障、操作完成等方面。
在 JavaFX 中处理事件
在 JavaFX 中,事件基本上用于通知应用程序有关用户采取的操作。JavaFX 提供了捕获事件、将事件路由到其目标并让应用程序处理事件的机制。
JavaFX 提供了javafx.event.Event类,它包含代表可以在 JavaFX 中生成的事件类型的所有子类。任何事件都是类Event或其任何子类的实例。
JavaFX 中有各种事件,即 MouseEvent、KeyEvent、ScrollEvent、DragEvent 等。我们也可以通过继承javafx.event.Event类来定义我们自己的事件。
下表描述了事件的属性。
属性 | 描述 |
---|---|
Event Type | 它是正在生成的事件的类型。它基本上是 EventType 类的实例。它是有层次的。EventType 类的实例进一步分为各种类型的事件,例如 KeyEvent 类包含 KEY_PRESSED、KEY_RELEASED 和 KEY_TYPED 类型。 |
Source | 它代表事件的来源,即负责产生事件的来源。 |
Target | 它是生成事件的节点。对于生成的事件,它保持不变。它是任何实现 EventTarget 接口的类的实例。 |
事件传递过程
需要遵循以下步骤来处理事件。
一、路线建设
创建事件调度链是为了确定事件的默认路由,无论何时生成。事件调度链包含从舞台到生成事件的节点的路径。
下图中为场景图节点之一上生成的事件创建了一个事件调度链。
二、事件捕获阶段
一旦创建了事件调度链,就会从事件的源节点调度事件。事件从上到下遍历所有节点。如果事件过滤器注册到这些节点中的任何一个,那么它将被执行。如果任何节点未向事件过滤器注册,则将事件传输到目标节点。在这种情况下,目标节点会处理事件。
三、事件冒泡
一旦事件被目标节点或任何注册的过滤器处理,事件再次从底部遍历所有节点到阶段节点。如果这些节点中的任何一个向事件过滤器注册,则它将被执行,否则该过程将完成。
四、事件处理程序和过滤器
事件处理程序和过滤器包含处理事件的应用程序逻辑。一个节点可以注册到多个事件过滤器。接口javafx.event.EventHandler必须由所有事件处理程序和过滤器实现。
热门文章
优秀文章