JavaFX便捷方法

本文概述

  • setOnAction()按钮操作的示例
  • setOnKeyEvent()按键事件的示例
JavaFX提供了可用于处理JavaFX应用程序中事件的便捷方法。它们提供了一种简单的方法来创建和注册事件处理程序, 以响应KeyEvent, MouseEvent, Action事件, 拖放事件等。
Node类包含各种事件处理程序属性, 可以使用该类中定义的setter方法将其设置为用户定义的事件处理程序。
将Node类的EventHandler属性设置为用户定义的事件处理程序, 将自动注册这些处理程序以接收相应的事件类型。
下表描述了EventHandler属性及其设置方法(便捷方法)。
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类型。这被分配给一个功能, 当节点具有焦点且输入法文本已更改时, 该功能将被调用。 setOnInputMethodTextChanged(EventHandler value )
onKeyPressed 这是KeyEvent的EventHandler类型。这被分配给一个功能, 当节点具有焦点并按下键时将调用该功能。 setOnKeyPressed(EventHandler value )
onKeyReleased 这是KeyEvent的EventHandler类型。这被分配给一个功能, 当节点具有焦点并释放键时将调用该功能。 setOnKeyReleased(EventHandler value )
onKeyTyped 这是KeyEvent的EventHandler类型。分配给一个函数, 当节点具有焦点并键入键时将调用该函数。 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 )
用于注册事件处理程序的便捷方法的格式如下
setOnEvent-type(EventHandler< ? super event-class> value)

【JavaFX便捷方法】其中, 事件类型是将通过定义的函数处理的事件的类型, 例如, setOnMouseMoved()将是为Mouse_Moved事件注册事件处理程序的便捷方法。
setOnAction()按钮操作的示例 在下面的示例中, 说明了setOnAction()方法。单击“播放”按钮并将其设置为旋转屏幕上的矩形时, 将调用通过setOnAction()方法注册的EventHandler。
暂停按钮也已注册到EventHandler中, 该事件处理程序设置为停止矩形的旋转。
package application; import javafx.animation.RotateTransition; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.util.Duration; public class EventHandlerExample extends Application {public static void main(String[] args) {Application.launch(args); }@Overridepublic void start(Stage primaryStage) { // Creating Rectangle Rectangle rect = new Rectangle(100, 100, 120, 120); // Setting Stroke and colour for the rectangle rect.setFill(Color.RED); rect.setStroke(Color.BLACK); // Instantiating RotateTransition class RotateTransition rotate = new RotateTransition(); //Setting properties for the Rotate Transition class rotate.setAutoReverse(false); rotate.setByAngle(360); rotate.setCycleCount(500); rotate.setDuration(Duration.millis(500)); rotate.setNode(rect); //Creating the play button Button btn = new Button(); //Setting properties for the play button btn.setText("Play"); btn.setTranslateX(100); btn.setTranslateY(250); //defining the convenience method to register the event handler to handle the Action event.btn.setOnAction(new EventHandler< ActionEvent> () {public void handle(ActionEvent event) {rotate.play(); }}); //Creating the pause button Button btn1 = new Button("Pause"); //Setting propertied for the pause button btn1.setTranslateX(160); btn1.setTranslateY(250); //Handling event for the pause button click event btn1.setOnAction(new EventHandler< ActionEvent> () {@Overridepublic void handle(ActionEvent arg0) {// TODO Auto-generated method stubrotate.pause(); } }); //Configuring group and scene Group root = new Group(); Scene scene = new Scene(root, 400, 350); root.getChildren().addAll(btn, rect, btn1); primaryStage.setScene(scene); primaryStage.setTitle("Handling Events"); primaryStage.show(); }}

setOnKeyEvent()按键事件的示例 setOnKeyEvent()方法可用于为节点上生成的键事件注册事件处理程序逻辑。在以下示例中, 将创建两个文本字段作为节点, 将在第一个文本字段中按下的键设置为在第二个文本字段中的文本。
package application; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.input.KeyEvent; import javafx.scene.paint.Color; import javafx.stage.Stage; public class JavaFX_KeyEvent extends Application{ @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub//Creating TextFields and setting position for them TextField tf1 = new TextField(); TextField tf2 = new TextField(); tf1.setTranslateX(100); tf1.setTranslateY(100); tf2.setTranslateX(300); tf2.setTranslateY(100); //Handling KeyEvent for textfield 1 tf1.setOnKeyPressed(new EventHandler< KeyEvent> () {@Overridepublic void handle(KeyEvent key) {// TODO Auto-generated method stubtf2.setText("Key Pressed :"+" "+key.getText()); }}); //setting group and scene Group root = new Group(); root.getChildren().addAll(tf2, tf1); Scene scene = new Scene(root, 500, 200, Color.WHEAT); primaryStage.setScene(scene); primaryStage.setTitle("Handling KeyEvent"); primaryStage.show(); } public static void main(String[] args) {launch(args); }}

JavaFX便捷方法

文章图片

    推荐阅读