Java 计算器详细注释

该代码创建了一个基于JavaSwing的简单计算器应用,具有数字输入、运算符按钮以及结果显示功能。使用了AWT和Swing包,通过ActionListener处理按钮点击事件,实现了基本的加、减、乘、除运算。
摘要由CSDN通过智能技术生成
import java.awt.*; //导入awt包
import java.awt.event.*;//导入awt.event包
import javax.swing.*; //导入swing包

public class Calculator extends JFrame { //创建一个名为Calculator的类,继承JFrame类
    private JTextField display; //创建一个名为display的文本框
    private JPanel buttonPanel; //创建一个名为buttonPanel的面板
    private double result; //创建一个名为result的double型变量
    private String lastCommand; //创建一个名为lastCommand的String型变量
    private boolean start; //创建一个名为start的boolean型变量

    public Calculator() { //创建一个无参构造方法
        display = new JTextField("0"); //将display初始化为0
        display.setEnabled(false); //设置display不可编辑
        add(display, BorderLayout.NORTH); //将display添加到窗口的北部

        buttonPanel = new JPanel(); //创建一个名为buttonPanel的面板
        buttonPanel.setLayout(new GridLayout(4, 4)); //将buttonPanel的布局设置为4行4列的网格布局

        ActionListener insert = new InsertAction(); //创建一个名为insert的ActionListener对象
        ActionListener command = new CommandAction(); //创建一个名为command的ActionListener对象

        addButton("7", insert); //添加数字7按钮
        addButton("8", insert); //添加数字8按钮
        addButton("9", insert); //添加数字9按钮
        addButton("/", command); //添加除号按钮

        addButton("4", insert); //添加数字4按钮
        addButton("5", insert); //添加数字5按钮
        addButton("6", insert); //添加数字6按钮
        addButton("*", command); //添加乘号按钮

        addButton("1", insert); //添加数字1按钮
        addButton("2", insert); //添加数字2按钮
        addButton("3", insert); //添加数字3按钮
        addButton("-", command); //添加减号按钮

        addButton("0", insert); //添加数字0按钮
        addButton(".", insert); //添加小数点按钮
        addButton("=", command); //添加等号按钮
        addButton("+", command); //添加加号按钮

        add(buttonPanel, BorderLayout.CENTER); //将buttonPanel添加到窗口的中央
        lastCommand = "="; //将lastCommand初始化为等号
        start = true; //将start初始化为true
    }

    private void addButton(String label, ActionListener listener) { //创建一个名为addButton的方法,用于添加按钮
        JButton button = new JButton(label); //创建一个名为button的按钮
        button.addActionListener(listener); //为button添加listener监听器
        buttonPanel.add(button); //将button添加到buttonPanel面板中
    }

    private class InsertAction implements ActionListener { //创建一个名为InsertAction的内部类,实现ActionListener接口
        public void actionPerformed(ActionEvent event) { //实现actionPerformed方法
            String input = event.getActionCommand(); //获取事件源的命令字符串
            if (start) { //如果start为true
                display.setText(""); //将display文本框清空
                start = false; //将start设置为false
            }
            display.setText(display.getText() + input); //将输入的内容添加到display文本框中
        }
    }

    private class CommandAction implements ActionListener { //创建一个名为CommandAction的内部类,实现ActionListener接口
        public void actionPerformed(ActionEvent event) { //实现actionPerformed方法
            String command = event.getActionCommand(); //获取事件源的命令字符串
            if (start) { //如果start为true
                if (command.equals("-")) { //如果命令字符串为减号
                    display.setText("-"); //将display文本框设置为减号
                    start = false; //将start设置为false
                }
                else lastCommand = command; //否则将lastCommand设置为命令字符串
            }
            else { //如果start为false
                calculate(Double.parseDouble(display.getText())); //调用calculate方法,传入display文本框中的内容
                lastCommand = command; //将lastCommand设置为命令字符串
                start = true; //将start设置为true
            }
        }
    }

    public void calculate(double x) { //创建一个名为calculate的方法,用于计算结果
        if (lastCommand.equals("+")) result += x; //如果lastCommand为加号,将x加到result中
        else if (lastCommand.equals("-")) result -= x; //如果lastCommand为减号,将x减去result
        else if (lastCommand.equals("*")) result *= x; //如果lastCommand为乘号,将x乘到result中
        else if (lastCommand.equals("/")) result /= x; //如果lastCommand为除号,将result除以x
        else if (lastCommand.equals("=")) result = x; //如果lastCommand为等号,将result设置为x
        display.setText("" + result); //将result显示在display文本框中
    }

    public static void main(String[] args) { //创建一个名为main的方法,用于启动程序
        Calculator frame = new Calculator(); //创建一个名为frame的Calculator对象
        frame.setTitle("Calculator"); //设置窗口标题为Calculator
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭时退出程序
        frame.setSize(300, 300); //设置窗口大小为300*300
        frame.setVisible(true); //设置窗口可见
}
    }

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值