本文概述
- setOnAction()按钮操作的示例
- setOnKeyEvent()按键事件的示例
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三次曲线
- JavaFX颜色
- JavaFX ColorInput
- JavaFX ColorAdjust效果
- JavaFX按钮
- JavaFX Cirlce
- uni-app开发全局弹层组件
- 路由基础之OSPF虚链路
- [OpenCV实战]23 使用OpenCV获取高动态范围成像HDR