• JavaFX桌面应用开发-鼠标事件和键盘事件


    鼠标相关事件的操作
    初始代码

    package application;

    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.stage.Stage;

    public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

    //创建button类
    //注意:Group容器组会自适应调节node节点的高、宽 以容纳node节点的内容 例如:如果下面Button的text内容比较多 那么对应的Button会相应加长
    Button button = new Button("Button1");
    button.setLayoutX(10); //设置起始点的X轴坐标
    button.setLayoutY(10); //设置起始的Y轴坐标
    //设置button的宽度 高度
    button.setPrefWidth(100);
    button.setPrefHeight(100);

    /**
    *
    * 鼠标的点击事件
    * */
    //单击事件
    button.setOnAction(new EventHandler<ActionEvent>() {

    @Override
    public void handle(ActionEvent event) {

    System.out.println("这是鼠标的单击事件");

    }
    });



    //设置Group
    Group group = new Group();
    group.getChildren().add(button);

    //创建场景Scene
    Scene scene = new Scene(group);

    primaryStage.setScene(scene);
    //设置stage的宽度 高度
    primaryStage.setHeight(500);
    primaryStage.setWidth(500);
    primaryStage.show();


    }

    public static void main(String[] args) {
    launch(args);
    }
    }
    2.1:单击事件
    注意:这个单击事件对与鼠标(左键 右键 中间滑轮),键盘任意键,TouchPad等输入器的点击都会运行,不是仅仅监听鼠标

    //单击事件

    //绑定事件源
    button.setOnAction(new EventHandler<ActionEvent>() {
    //重写实现方法
    @Override
    public void handle(ActionEvent event) {
    //执行事件发生后的操作
    System.out.println("这是任意键的单击事件");

    }
    });
    2.2:鼠标单击事件(仅仅对鼠标起作用)
    注意:MouseEvent提供了很多鼠标的操作方法 如下

    //鼠标单击事件 左键 右键 中键单击都有效

    //绑定事件源 EventHandler传入Event为MouseEvent
    button.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    //重写EventHandler接口实现方法
    @Override
    public void handle(MouseEvent event) {
    //执行事件发生后的动作
    System.out.println("这是鼠标单击事件 仅仅对鼠标单击有用");

    }
    });
    2.3:鼠标的双击&多击事件
    event.getClickCount()可以获得int类型的连续点击次数,可以用它来判断单击 双击 或者多击事件

    //鼠标双击 多击事件

    //绑定事件源 EventHandler传入Event为MouseEvent
    button.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    //重写EventHandler接口实现方法
    @Override
    public void handle(MouseEvent event) {
    //执行事件发生后的动作
    if(event.getClickCount() == 2){ //连续点击次数等于2 则执行下列操作

    System.out.println("鼠标双击事件");
    }
    }
    });
    2.4:鼠标左键事件
    MouseButton有下列操作 来判断点击的事左键 右键 还是中键

    //鼠标双击 多击事件

    //绑定事件源 EventHandler传入Event为MouseEvent
    button.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    //重写EventHandler接口实现方法
    @Override
    public void handle(MouseEvent event) {
    //执行事件发生后的动作
    if(event.getClickCount() == 2 && event.getButton().name().equals(MouseButton.PRIMARY.name())){ //连续点击次数等于2 则执行下列操作

    System.out.println("鼠标双击事件--->左击事件");
    }
    }
    });
    3:键盘事件的监听
    3.1:键盘按下的事件
    //键盘事件

    //绑定事件源 按键按下
    button.setOnKeyPressed(new EventHandler<KeyEvent>() {

    @Override
    public void handle(KeyEvent event) {
    //event.getCode().name()获取按键的值
    System.out.println("键盘按下了按键=" + event.getCode().name());

    }
    });
    3.2:键盘释放的事件
    //键盘事件

    //绑定事件源 按键释放
    button.setOnKeyReleased(new EventHandler<KeyEvent>() {

    @Override
    public void handle(KeyEvent event) {
    //event.getCode().name()获取按键的值
    System.out.println("键盘释放了按键=" + event.getCode(http://www.my516.com).name());

    }
    });
    --------------------- 

  • 相关阅读:
    矩阵分析 p13~p20
    矩阵分析 p1~p13
    复变函数2
    口语80篇(1-2)
    复变函数1
    背单词方法
    writing practice
    将博客搬至CSDN
    windows内核编程 白话设备栈
    sfliter__except_handler4
  • 原文地址:https://www.cnblogs.com/ly570/p/11026721.html
Copyright © 2020-2023  润新知