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

1:什么是鼠标事件和键盘事件

  • 鼠标事件:双击 单击 右击 滑动
  • 键盘事件:按下 释放

2:鼠标相关事件的操作

初始代码

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

 

 

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值