JavaFX事件处理机制是一种用于处理用户界面交互的机制,它可以让开发者更好地控制应用程序的行为。JavaFX事件处理机制使用一种叫做“监听器”的技术来实现,这种技术允许开发者在特定的时间内监听特定的事件,并根据需要执行特定的动作。
JavaFX中的事件处理机制提供了一个标准化的方法来处理用户界面中出现的不同类型的事件。例如,当用户单击一个按钮时,JavaFX会自动调用该按钮上注册的监听器(也就是说,当该按钮被单击时)。这样就可以在不同时间执行不同功能。
JavaFX中使用EventHandler来处理不同类型的事件。EventHandler是一个泛型接口(Generic Interface),它允许开发者使用不同类型的对象来处理不同类型的事件。例如:
EventHandler<ActionEvent> handler = new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // Do something when the button is clicked } };
上面代码中定义了一个ActionEvent处理器handler, 当button被单击时, handle()方法就会被执行. 在handle()方法里, 可以根据需要执行特定功能.
此外, JavaFX还允许开发者使用Lambda表达式来声明并注册监听器. Lambda表达式是一个匿名函数, 允许开发者在声明监听器时更加方便快捷. 例如:
(event) -> { // Do something when the button is clicked }
上面代码中, 我们使用Lambda表达式声明并注冊一个ActionEvent监听噤. 当button 被单击时, Lambda衔接式释义释义释义释义释义释义释义释义释义释义释义释义释义释义释义将会立即执衅.
总之, JavaFX中使电子化 EventHandler 来帮助开发者快速、方便地处理不否畔面上出现得不适当得交流. 通过 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 EventHandler 电子化 , 可以圣诞根据应甲要求快速、方便地对畔面上得不适当得交流进衅处理.
事件处理程序允许在事件冒泡阶段期间处理事件。
事件处理程序是EventHandler接口的实现。要注册处理程序,请使用addEventHandler()方法。
scene.addEventHandler(DragEvent.DRAG_ENTERED, new EventHandler<DragEvent>() { public void handle(DragEvent e) { System.out.println("drag enter"); } });
完整的源代码
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.DragEvent; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); TextField textBox = new TextField(); textBox.setPromptText("Write here"); // Register an event handler for a single node and a specific event type scene.addEventHandler(DragEvent.DRAG_ENTERED, new EventHandler<DragEvent>() { public void handle(DragEvent e) { System.out.println("drag enter"); } }); root.getChildren().add(textBox); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
以下代码定义了一个事件处理程序对象并重用它添加事件处理程序。
// Define an event handler EventHandler handler = new EventHandler<InputEvent>() { public void handle(InputEvent event) { System.out.println("Handling event " + event.getEventType()); event.consume(); } }; scene.addEventHandler(DragEvent.DRAG_EXITED, handler); scene.addEventHandler(MouseEvent.MOUSE_DRAGGED, handler);
完整的源代码
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.DragEvent; import javafx.scene.input.InputEvent; import javafx.scene.input.MouseEvent; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); TextField textBox = new TextField(); textBox.setPromptText("Write here"); // Define an event handler EventHandler handler = new EventHandler<InputEvent>() { public void handle(InputEvent event) { System.out.println("Handling event " + event.getEventType()); event.consume(); } }; scene.addEventHandler(DragEvent.DRAG_EXITED, handler); scene.addEventHandler(MouseEvent.MOUSE_DRAGGED, handler); root.getChildren().add(textBox); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
删除事件处理程序
myNode.removeEventHandler(DragEvent.DRAG_EXITED, handler);
要删除由方便方法注册的事件处理程序,传递null到便利方法
node.setOnMouseDragged(null);
Java 实例 - 获取文件修改时间 Java 实例以下实例演示了使用 File 类的file.lastModified() 方法来获取文件最后的修改时间import...
Java 实例 - 查看系统根目录 Java 实例以下实例演示了使用 File 类的 listRoots() 方法来输出系统所有根目录:import java.io.*;...
Java 实例 - 设置文件只读 Java 实例以下实例演示了使用 File 类的 file.setReadOnly() 和 file.canWrite() 方法来设置文件只读...
Java 实例 - 判断目录是否为空 Java 实例以下实例演示了使用 File 类的 file.isDirectory(),file.list() 和 file.getPath() 方法...
Java 实例 - 获取链表(LinkedList)的第一个和最后一个元素 Java 实例以下实例演示了如何使用 LinkedList 类的 linkedlistname....