举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > javafx事件处理机制 JavaFX事件处理程序

javafx事件处理机制 JavaFX事件处理程序

2023-03-12 22:31 Java教程

javafx事件处理机制 JavaFX事件处理程序

javafx事件处理机制

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 电子化 , 可以圣诞根据应甲要求快速、方便地对畔面上得不适当得交流进衅处理.

JavaFX事件处理程序

JavaFX教程 - JavaFX事件处理程序


事件处理程序允许在事件冒泡阶段期间处理事件。

注册事件处理程序

事件处理程序是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();
  }
}

上面的代码生成以下结果。

null


重用事件处理程序

以下代码定义了一个事件处理程序对象并重用它添加事件处理程序。

    // 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();
  }
}

上面的代码生成以下结果。

null


删除事件处理程序

删除事件处理程序

myNode.removeEventHandler(DragEvent.DRAG_EXITED, handler);

要删除由方便方法注册的事件处理程序,传递null到便利方法

node.setOnMouseDragged(null);
阅读全文
以上是鳄鱼CMS为你收集整理的javafx事件处理机制 JavaFX事件处理程序全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们