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); //设置窗口可见
}
}
Java 计算器详细注释
该代码创建了一个基于JavaSwing的简单计算器应用,具有数字输入、运算符按钮以及结果显示功能。使用了AWT和Swing包,通过ActionListener处理按钮点击事件,实现了基本的加、减、乘、除运算。
摘要由CSDN通过智能技术生成