首页 > 其他分享 >2024/06/24笔记随笔

2024/06/24笔记随笔

时间:2024-06-24 09:24:08浏览次数:3  
标签:24 06 Button 30 display 2024 new gridPane event

网格布局创建简易计算器

public class CalculatorDemo extends Application {
    private double number1 = 0;
    private String operator = "";
    private boolean start = true;

    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Calculator");

        //创建网格布局
        GridPane gridPane = new GridPane();
        gridPane.setHgap(10); //设置水平间距
        gridPane.setVgap(10); //设置垂直间距
        gridPane.setAlignment(Pos.CENTER);

        //创建场景
        Scene scene = new Scene(gridPane,300,300);

        //创建文本输入框
        TextField display = new TextField();
        display.setPrefHeight(30);//设置高度

        //添加到网格布局
        gridPane.add(display, 0, 0, 4, 1);

        //创建按钮
        Button btn1 = new Button("1");
        btn1.setPrefWidth(30);
        btn1.setPrefHeight(30);
        Button btn2 = new Button("2");
        btn2.setPrefWidth(30);
        btn2.setPrefHeight(30);
        Button btn3 = new Button("3");
        btn3.setPrefWidth(30);
        btn3.setPrefHeight(30);
        Button btn4 = new Button("4");
        btn4.setPrefWidth(30);
        btn4.setPrefHeight(30);
        Button btn5 = new Button("5");
        btn5.setPrefWidth(30);
        btn5.setPrefHeight(30);
        Button btn6 = new Button("6");
        btn6.setPrefWidth(30);
        btn6.setPrefHeight(30);
        Button btn7 = new Button("7");
        btn7.setPrefWidth(30);
        btn7.setPrefHeight(30);
        Button btn8 = new Button("8");
        btn8.setPrefWidth(30);
        btn8.setPrefHeight(30);
        Button btn9 = new Button("9");
        btn9.setPrefWidth(30);
        btn9.setPrefHeight(30);
        Button btn0 = new Button("0");
        btn0.setPrefWidth(30);
        btn0.setPrefHeight(30);
        Button btnAdd = new Button("+");
        btnAdd.setPrefWidth(30);
        btnAdd.setPrefHeight(30);
        Button btnSub = new Button("-");
        btnSub.setPrefWidth(30);
        btnSub.setPrefHeight(30);
        Button btnMul = new Button("*");
        btnMul.setPrefWidth(30);
        btnMul.setPrefHeight(30);
        Button btnDiv = new Button("/");
        btnDiv.setPrefWidth(30);
        btnDiv.setPrefHeight(30);
        Button btnDot = new Button(".");
        btnDot.setPrefWidth(30);
        btnDot.setPrefHeight(30);
        Button btnEqual = new Button("=");
        btnEqual.setPrefWidth(30);
        btnEqual.setPrefHeight(30);
        Button btnClear = new Button("C");
        btnClear.setPrefWidth(30);
        btnClear.setPrefHeight(30);

        //添加按钮到网格布局
        //第一行
        gridPane.add(btn7, 0, 1);
        gridPane.add(btn8, 1, 1);
        gridPane.add(btn9, 2, 1);
        gridPane.add(btnDiv, 3, 1);

        //第二行
        gridPane.add(btn4, 0, 2);
        gridPane.add(btn5, 1, 2);
        gridPane.add(btn6, 2, 2);
        gridPane.add(btnMul, 3, 2);

        //第三行
        gridPane.add(btn1, 0, 3);
        gridPane.add(btn2, 1, 3);
        gridPane.add(btn3, 2, 3);
        gridPane.add(btnSub, 3, 3);

        //第四行
        gridPane.add(btn0, 0, 4);
        gridPane.add(btnDot, 1, 4);
        gridPane.add(btnClear, 2, 4);
        gridPane.add(btnAdd, 3, 4);

        //第五行
        gridPane.add(btnEqual, 0, 5);

        //添加按钮点击事件
        btn1.setOnAction(event -> handleNumber(event, display));
        btn2.setOnAction(event -> handleNumber(event, display));
        btn3.setOnAction(event -> handleNumber(event, display));
        btn4.setOnAction(event -> handleNumber(event, display));
        btn5.setOnAction(event -> handleNumber(event, display));
        btn6.setOnAction(event -> handleNumber(event, display));
        btn7.setOnAction(event -> handleNumber(event, display));
        btn8.setOnAction(event -> handleNumber(event, display));
        btn9.setOnAction(event -> handleNumber(event, display));
        btn0.setOnAction(event -> handleNumber(event, display));
        btnDot.setOnAction(event -> handleDecimal(event, display));
        btnAdd.setOnAction(event -> handleOperator(event, display));
        btnSub.setOnAction(event -> handleOperator(event, display));
        btnMul.setOnAction(event -> handleOperator(event, display));
        btnDiv.setOnAction(event -> handleOperator(event, display));
        btnEqual.setOnAction(event -> handleEquals(event, display));
        btnClear.setOnAction(event -> handleClear(event, display));

        stage.setScene(scene);
        stage.show();
    }

    //处理数字按钮点击事件
    private void handleNumber(ActionEvent event, TextField display) {
        //获取按钮值
        String value = ((Button) event.getSource()).getText();
        if (start) {
            display.setText(value);
            start = false;
        } else {
            display.setText(display.getText() + value);
        }
    }

    //处理运算符按钮点击事件
    private void handleOperator(ActionEvent event, TextField display) {
        String value = ((Button) event.getSource()).getText();
        if (!"=".equals(value)) {
            if (!operator.isEmpty())
                return;
            operator = value;
            number1 = Double.parseDouble(display.getText());
            display.setText("");
        } else {
            if (operator.isEmpty())
                return;
            double number2 = Double.parseDouble(display.getText());
            double result = calculate(number1, number2, operator);
            display.setText(String.valueOf(result));
            operator = "";
            start = true;
        }
    }

    // 处理小数点按钮点击事件
    private void handleDecimal(ActionEvent event, TextField display) {
        if (start) {
            display.setText("0.");
            start = false;
        } else if (!display.getText().contains(".")) {
            display.setText(display.getText() + ".");
        }
    }

    //处理等号按钮点击事件
    private void handleEquals(ActionEvent event, TextField display) {
        handleOperator(event,display);
    }

    //处理清空按钮点击事件
    private void handleClear(ActionEvent event, TextField display) {
        display.setText("0");
        operator = "";
        start = true;
    }

    //计算结果
    private double calculate(double number1, double number2, String operator) {
        switch (operator) {
            case "+": return number1 + number2;
            case "-": return number1 - number2;
            case "*": return number1 * number2;
            case "/":
                if (number2 == 0) {
                    return 0;
                }
                return number1 / number2;
            default: return 0;
        }
    }

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

标签:24,06,Button,30,display,2024,new,gridPane,event
From: https://www.cnblogs.com/lizexuan/p/18264332

相关文章

  • 【华为OD机试真题】224、欢乐的周末 | 机试真题+思路参考+代码分析(最新抽中CD卷)(C++、J
    文章目录一、题目......
  • 2024CISCN华东南-WEB-gxngxngxn
    WEB差不多2小时就把web给ak了,没想到华东南强度最大的不是题目,而是场地连续8小时的30多度高温(welcomesubmit-BREAKsubmit-FIX修复点在upload.php<?php//$path="./uploads";error_reporting(0);$path="./uploads";$name=$_FILES['myfile']['name'];$co......
  • WPF 做一个超级简单的 1024 数字接龙游戏
    这是一个我给自己做着玩的游戏,没有什么复杂的界面,就一些简单的逻辑游戏的规则十分简单,那就是有多个列表。程序会给出一个数字,玩家决定数字放在哪个列表里面。如果放入列表里面的数字和列表里面最后一个数字相同,那两个数字将会叠加进行合并,合并两个1024将会自动清理掉整个列表......
  • [题解]CF1066E Binary Numbers AND Sum
    思路考虑对于每一个\(a\)上数位进行分析。令\(a_i\)表示\(a\)在二进制表示中从左往右数的第\(i\)位上的数字,\(b_i\)同理。分类讨论一下\(a_i\)的取值对于答案的贡献:如果\(a_i=0\),对于这一位无论如何都不会拥有贡献。如果\(a_i=1\),因为\(b\)会向右移,所以能......
  • [题解]CF1061C Multiplicity
    题意给定一个长度为\(n\)的序列\(\{a_1,a_2,\dots,a_n\}\)。现在要在\(a\)选出非空子序列\(\{b_1,b_2,\dots,b_m\}\),使得所有的\(i\in[1,m]\),都有\(b_i\bmodi=0\)。求能够选取\(b\)序列的方案数模\(10^9+7\)的值。思路定义\(dp_{i,j}\)表示在\(\{a_1,a......
  • 【openGauss、PostgreSQL】openGauss、PostgreSQL数据库通用查表字段信息脚本-v202406
    【openGauss、PostgreSQL】openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216此脚本,openGauss、PostgreSQL都可执......
  • zhe_暑假生活_2024
    自学   英语      每天英语单词5个记录、5个就单词朗读      初中英语阅读与完形      初中英语语法与词汇      新概念英语      六下_培优   语文      每天摘抄优秀作文      古诗视频      西游记......
  • AI 大模型企业应用实战(06)-初识LangChain
    LLM大模型与AI应用的粘合剂。1langchain是什么以及发展过程LangChain是一个开源框架,旨在简化使用大型语言模型构建端到端应用程序的过程,也是ReAct(reason+act)论文的落地实现。2022年10月25日开源54K+star种子轮一周1000万美金,A轮2500万美金11个月里累计发布200多次,提交4......
  • 算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码
    卡码网110字符串接龙这题一开始用的邻接表+dfs,不幸超时#include<iostream>#include<list>#include<string>#include<vector>usingnamespacestd;intminLen=501;boolcount(stringa,stringb){intnum=0;for(inti=0;i<a.lengt......
  • 06-6.1.1 图的基本概念
    ......