JavaFx实现键盘、鼠标、按钮的监听

在JavaFX中,为UI组件添加鼠标、键盘和按钮事件监听器的方法如下:

一、简单示例:

1. 首先,确保已经导入了JavaFX库。在`pom.xml`文件中添加以下依赖(如果使用Maven):

java 复制代码
xml<dependencies>
  <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>16</version>
    </dependency>
</dependencies>

2.创建一个JavaFX应用程序,并在其中添加一个按钮、一个文本框和一个标签。为按钮、文本框和标签添加鼠标、键盘和按钮事件监听器。

java 复制代码
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class JavaFXListenersExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Button button = new Button("点击我");
        TextField textField = new TextField();
        Label label = new Label("鼠标和键盘事件监听器示例");

        // 为按钮添加事件监听器
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("按钮被点击了!");
            }
        });

        // 为文本框添加键盘事件监听器
        textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent event) {
                System.out.println("键盘按下事件:" + event.getCode());
            }
        });

        // 为标签添加鼠标事件监听器
        label.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("鼠标点击事件:" + event.getButton());
            }
        });

        VBox root = new VBox(button, textField, label);
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("JavaFX 监听器示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

总结:

在这个示例中,我们创建了一个JavaFX应用程序,其中包含一个按钮、一个文本框和一个标签。

我们为按钮添加了一个`ActionEvent`监听器,当用户单击按钮时,会打印出"按钮被点击了!"。

我们为文本框添加了一个`KeyEvent`监听器,当用户在文本框中按下键盘时,会打印出相应的键盘按键。

我们为标签添加了一个`MouseEvent`监听器,当用户单击标签时,会打印出相应的鼠标按钮。

二、复杂监听(鼠标--单击 、按钮--点击、键盘--打印按下内容)

java 复制代码
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class JavaFXListenersExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Button button = new Button("点击我");
        TextField textField = new TextField();
        Label label = new Label("鼠标和键盘事件监听器示例");

        // 为按钮添加事件监听器
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("按钮被点击了!");
            }
        });

        // 为文本框添加键盘事件监听器
        textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent event) {
                System.out.println("键盘按下事件:" + event.getCode());
            }
        });

        // 为标签添加鼠标事件监听器
        label.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("鼠标点击事件:" + event.getButton());
            }
        });

        VBox root = new VBox(button, textField, label);
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("JavaFX 监听器示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

JavaFX还支持其他类型的事件监听器,如鼠标移动、拖放等。我们可以根据需要为UI组件添加相应的监听器来实现需求。

相关推荐
这个DBA有点耶1 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
仿生狮子2 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen2 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
许彰午2 小时前
95_Python内存管理与垃圾回收
开发语言·python
csdn2015_2 小时前
springboot读取配置的方法
java·spring boot·spring
Highcharts.js2 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
多加点辣也没关系2 小时前
JavaScript|第13章:原始类型的方法
开发语言·javascript·ecmascript
এ慕ོ冬℘゜2 小时前
深入理解 JavaScript 事件体系:Window、鼠标与键盘事件详解
开发语言·javascript·okhttp
AOwhisky3 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
阿祖zu3 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent