ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaFX Button和Scene点击事件代码示例

2021-07-02 11:03:02  阅读:163  来源: 互联网

标签:示例 javafx Button JavaFX scene StackPane import btn public


最终效果

在这里插入图片描述

代码

写在一个类里面

package cn.zxl.StackPane;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:04
 * @Version: 1.0
 **/
public class MyStackPane extends Application implements EventHandler<MouseEvent> {
    Button btn;
    @Override
    public void start(Stage primaryStage) throws Exception {
        btn = new Button("你好");
        btn.setOnMouseClicked(this);
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(btn);
        Scene scene = new Scene(stackPane, 200, 200);
        scene.setOnMousePressed(this);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

    @Override
    public void handle(MouseEvent event) {
        if (event.getSource()==btn){
            System.out.println("你点击的是按钮");
        }else {
            System.out.println("你点击了场景");
        }
    }
}

也可以单独提取出事件监听类

按钮事件监听类

package cn.zxl.StackPane;

import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:20
 * @Version: 1.0
 **/
public class MyMouseEvent implements EventHandler<MouseEvent> {
    @Override
    public void handle(MouseEvent event) {
        System.out.println("你点击的是按钮");
    }
}

场景事件监听类

package cn.zxl.StackPane;

import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:24
 * @Version: 1.0
 **/
public class SceneMouseEvent implements EventHandler<MouseEvent> {
    @Override
    public void handle(MouseEvent event) {
        System.out.println("你点击的是场景");
    }
}

调用

package cn.zxl.StackPane;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:04
 * @Version: 1.0
 **/
public class MyStackPane2 extends Application{
    Button btn;
    @Override
    public void start(Stage primaryStage) throws Exception {
        btn = new Button("你好");
        btn.setOnMouseClicked(new MyMouseEvent());
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(btn);
        Scene scene = new Scene(stackPane, 200, 200);
        scene.setOnMousePressed(new SceneMouseEvent());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

匿名内部类方式(推荐)
package cn.zxl.StackPane;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:04
 * @Version: 1.0
 **/
public class MyStackPane3 extends Application{
    Button btn;
    @Override
    public void start(Stage primaryStage) throws Exception {
        btn = new Button("你好");
        btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("你点击的是按钮");
            }
        });
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(btn);
        Scene scene = new Scene(stackPane, 200, 200);
        scene.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("你点击的是场景");
            }
        });
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

lambda表达式(新手不推荐)
package cn.zxl.StackPane;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * @Description: //TODO
 * @Author: zhangxueliang
 * @Create: 2021-05-27 09:04
 * @Version: 1.0
 **/
public class MyStackPane4 extends Application{
    Button btn;
    @Override
    public void start(Stage primaryStage) throws Exception {
        btn = new Button("你好");
        btn.setOnMouseClicked(event -> {
            System.out.println("你点击的是按钮");
        });
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(btn);
        Scene scene = new Scene(stackPane, 200, 200);
        scene.setOnMousePressed(event -> {
            System.out.println("你点击的是场景");
        });
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

 

标签:示例,javafx,Button,JavaFX,scene,StackPane,import,btn,public
来源: https://blog.51cto.com/u_7692005/2967942

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有