JAVAFX 按钮基本事件和快捷键设置

11 篇文章 1 订阅

按钮基本使用和快捷键设置,快捷键设置相当于单击事件

按钮字体、颜色、边框,单击、双击、按键事件等


package application;
	

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCharacterCombination;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.Mnemonic;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.stage.Stage;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		Group root = new Group();
		Scene s = new Scene(root, 300, 300, Color.BLACK);

       
		Rectangle r = new Rectangle(25,25,250,250);
		r.setFill(Color.BLUE);
		Button btn = new Button();
		btn.setText("changeSize");
		// 设置按钮的字体
		btn.setFont(Font.font("sans-serif",40));
        //b1.setFont(Font.font(40));

        // 设置按钮的背景颜色
        BackgroundFill backgroundFill = new BackgroundFill(Paint.valueOf("#8FBC8F"), new CornerRadii(20), Insets.EMPTY);
        Background background = new Background(backgroundFill);
        btn.setBackground(background);

        // 设置按钮的边框
        BorderStroke borderStroke = new BorderStroke(Paint.valueOf("#8A2BE2"), BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(10));
        Border border = new Border(borderStroke);
        btn.setBorder(border);

        // 设置按钮文字的颜色
        btn.setTextFill(Paint.valueOf("#CD0000"));
        //单击事件
		btn.setOnAction((e)->{
			
			r.setWidth(300);
			r.setHeight(300);
		});
		//双击事件
		btn.addEventHandler(MouseEvent.MOUSE_CLICKED, (e)->{
			 System.out.println(e.getButton().name());
	            if (e.getClickCount() == 2 && e.getButton().name().equals(MouseButton.PRIMARY.name())) {
	                System.out.println("鼠标双击");
	            }
		});
		//键盘按下
		btn.setOnKeyPressed((e)->{
			if (e.getCode().getName().equals(KeyCode.A.getName())) {
                System.out.println(e.getCode().getName());
            }
		});
		//键盘弹起
		btn.setOnKeyReleased(new EventHandler<KeyEvent>() {
	            @Override
	            public void handle(KeyEvent event) {
	                System.out.println(event.getCode().getName());
	            }
	        });
	//设置快捷键,快捷键属于单击事件
		 // 第一种
        KeyCombination kc1 = new KeyCodeCombination(KeyCode.C, KeyCombination.ALT_DOWN, KeyCombination.CONTROL_DOWN);
        Mnemonic mnemonic1 = new Mnemonic(btn, kc1);
       
        s.addMnemonic(mnemonic1);

        // 第二种
        KeyCombination kc2 = new KeyCharacterCombination("O", KeyCombination.ALT_DOWN);
        Mnemonic mnemonic2 = new Mnemonic(btn, kc2);
        s.addMnemonic(mnemonic2);

        // 第三种
        KeyCodeCombination kc4 = new KeyCodeCombination(KeyCode.Y, KeyCombination.SHORTCUT_DOWN);
        s.getAccelerators().put(kc4, new Runnable() {
            @Override
            public void run() {
                System.out.println("run()方法");
                btn.fire();
            }
        });
		root.getChildren().add(r);
		root.getChildren().add(btn);
		primaryStage.setScene(s);
		primaryStage.setTitle("FX");
		primaryStage.setHeight(800);
		primaryStage.setWidth(800);
		primaryStage.show();
		
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值