初始代码java
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); } }
注意:这个单击事件对与鼠标(左键 右键 中间滑轮),键盘任意键,TouchPad等输入器的点击都会运行,不是仅仅监听鼠标node
//单击事件 //绑定事件源 button.setOnAction(new EventHandler<ActionEvent>() { //重写实现方法 @Override public void handle(ActionEvent event) { //执行事件发生后的操做 System.out.println("这是任意键的单击事件"); } });
注意:MouseEvent提供了不少鼠标的操做方法 以下app
//鼠标单击事件 左键 右键 中键单击都有效 //绑定事件源 EventHandler传入Event为MouseEvent button.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { //重写EventHandler接口实现方法 @Override public void handle(MouseEvent event) { //执行事件发生后的动做 System.out.println("这是鼠标单击事件 仅仅对鼠标单击有用"); } });
event.getClickCount()能够得到int类型的连续点击次数,能够用它来判断单击 双击 或者多击事件ide
//鼠标双击 多击事件 //绑定事件源 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("鼠标双击事件"); } } });
MouseButton有下列操做 来判断点击的事左键 右键 仍是中键code
//鼠标双击 多击事件 //绑定事件源 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("鼠标双击事件--->左击事件"); } } });
//键盘事件 //绑定事件源 按键按下 button.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { //event.getCode().name()获取按键的值 System.out.println("键盘按下了按键=" + event.getCode().name()); } });
//键盘事件 //绑定事件源 按键释放 button.setOnKeyReleased(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { //event.getCode().name()获取按键的值 System.out.println("键盘释放了按键=" + event.getCode().name()); } });