便利方法

2024年8月29日 | 阅读 8 分钟

JavaFX 提供了便利方法,可以用来处理 JavaFX 应用程序中的事件。它们提供了一种简单的方式来创建和注册事件处理程序,以响应 KeyEvent、MouseEvent、ActionEvent、拖放事件等等。

Node 类包含各种事件处理程序属性,可以使用该类中定义的 setter 方法将其设置为用户定义的事件处理程序。

将 Node 类的 EventHandler 属性设置为用户定义的事件处理程序,会自动注册这些处理程序以接收相应的事件类型。

下表描述了 EventHandler 属性及其 setter 方法(便利方法)。

EventHandler 属性描述设置器方法
onContextMenuRequested这是 ContextMenuEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上请求上下文菜单时调用。setOnContextMenuRequested(EventHandler value )
onDragDetected这是 MouseEvent 类型的 EventHandler。 它指示一个函数,该函数将在检测到拖动手势时调用。setOnDragDetected(EventHandler value )
onDragDone这是 DragEvent 类型的 EventHandler。setOnDragDone(EventHandler value )
onDragDropped这是 DragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在拖放操作期间释放鼠标时调用。setOnDragDropped(EventHandler value )
onDragEntered这是 DragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在拖动手势进入节点时调用。setOnDragEntered(EventHandler value )
onDragExited这是 DragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在拖动手势退出节点时调用。setOnDragExited(EventHandler value )
onDragOver这是 DragEvent 类型的 EventHandler。它被分配给一个函数,该函数将在拖动手势在节点内进行时调用。setOnDragOver(EventHandler value )
onInputMethodTextChanged这是 InputMethodEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在 Node 具有焦点并且输入法文本已更改时调用。setOnInputMethodTextChanged(EventHandler value )
onKeyPressed这是 KeyEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在 Node 具有焦点并且按下键时调用。setOnKeyPressed(EventHandler value )
onKeyReleased这是 KeyEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在 Node 具有焦点并且释放键时调用。setOnKeyReleased(EventHandler value )
onKeyTyped这是 KeyEvent 类型的 EventHandler。它被分配给一个函数,该函数将在 Node 具有焦点并且键入键时调用。setOnKeyTyped(EventHandler value )
onMouseClicked这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标按钮在节点上单击时调用。setOnMouseClicked(EventHandler value )
onMouseDragEntered这是 MouseDragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在完全按下拖动释放手势进入节点时调用。setOnMouseDragEntered(EventHandler value )
onMouseDragExited这是 MouseDragEvent 类型的 EventHandler。它被分配给一个函数,该函数将在完全按下拖动释放手势退出节点时调用。setOnMouseDragExited(EventHandler value )
onMouseDragged这是 MouseDragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标按钮被按下并在节点上拖动时调用。setOnMouseDragged(EventHandler value )
onMouseDragOver这是 MouseDragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在完全按下拖动释放手势在节点内进行时调用。setOnMouseDragOver(EventHandler value )
onMouseDragReleased这是 MouseDragEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在完全按下拖动释放手势在节点内结束时调用。setOnMouseDragReleased(EventHandler value )
onMouseEntered这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标进入节点时调用。setOnMouseEntered(EventHandler value )
onMouseExited这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标退出节点时调用。setOnMouseExited(EventHandler value )
onMouseMoved这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标在节点内移动且未按下任何按钮时调用。setOnMouseMoved(EventHandler value )
onMousePressed这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标按钮在节点上按下时调用。setOnMousePressed(EventHandler value )
onMouseReleased这是 MouseEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在鼠标按钮在节点上释放时调用。setOnMouseReleased(EventHandler value )
onRotate这是 RotateEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上执行旋转操作时调用。setOnRotate(EventHandler value )
onRotationFinished这是 RotateEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在旋转手势结束时调用。setOnRotationFinished(EventHandler value )
onRotationStarted这是 RotateEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在首次检测到旋转手势时调用。setOnRotationStarted(EventHandler value )
onScrollFinished这是 ScrollEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在滚动操作结束时调用。setOnScrollFinished(EventHandler value )
onScroll这是 ScrollEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在执行滚动操作时调用。setOnScroll(EventHandler value )
onScrollStarted这是 ScrollEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在检测到滚动操作时调用。setOnScrollStarted(EventHandler value )
onSwipeDown这是 SwipeEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上发生向下轻扫时调用。setOnSwipeDown(EventHandler value )
onSwipeUP这是 SwipeEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上发生向上轻扫时调用。setOnSwipeUP(EventHandler value )
onSwipeLeft这是 SwipeEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上发生向左轻扫时调用。setOnSwipeLeft(EventHandler value )
onSwipeRight这是 SwipeEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在节点上发生向右轻扫时调用。setOnSwipeRight(EventHandler value )
onTouchMoved这是 TouchEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在触摸点在节点上移动时调用。setOnTouchMoved(EventHandler value )
onTouchReleased这是 TouchEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在触摸点在节点上释放时调用。setOnTouchReleased(EventHandler value )
onTouchStationary这是 TouchEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在触摸点被按下并保持静止时调用。setOnTouchStationary(EventHandler value )
onZoomFinished这是 ZoomEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在缩放手势结束时调用。setOnZoomFinished(EventHandler value )
onZoom这是 ZoomEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在执行缩放手势时调用。setOnZoom(EventHandler value )
onZoomStarted这是 ZoomEvent 类型的 EventHandler。 它被分配给一个函数,该函数将在检测到缩放手势时调用。setOnZoomStarted(EventHandler value )

事件处理程序注册的便利方法具有以下格式:

其中事件类型是要通过定义的函数处理的事件的类型,例如,setOnMouseMoved() 将是为 Mouse_Moved 事件注册事件处理程序的便利方法。

setOnAction() 按钮操作示例

在以下示例中,说明了 setOnAction() 方法。 当单击“播放”按钮时,调用使用 setOnAction() 方法注册的 EventHandler,并将其设置为旋转屏幕上的矩形。

“暂停”按钮也注册了 EventHandler,该 EventHandler 设置为停止矩形的旋转。

setOnKeyEvent() 键事件示例

setOnKeyEvent() 方法可用于注册在节点上生成的键事件的事件处理程序逻辑。 在以下示例中,创建了两个文本字段作为节点,在第一个文本字段中按下的键被设置为第二个文本字段中的文本。


JavaFX Convenience Methods
下一个主题JavaFX 事件过滤器