package 计算机.java;
//导入swing和awt包,用于创建图形界面
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//定义一个类Calculator,继承自JFrame,实现ActionListener接口
public class jisuanji extends JFrame implements ActionListener {
// 定义一些私有变量,用于存储组件和数据
private JTextField textField; // 文本框,用于显示输入和输出
private JButton[] buttons; // 按钮数组,用于存储数字和运算符按钮
private String[] labels = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", ".", "0", "=", "/"}; // 按钮标签数组,用于显示按钮上的文字
private double result = 0; // 结果变量,用于存储计算结果
private String operator = "="; // 运算符变量,用于存储当前的运算符
private boolean start = true; // 开始标志变量,用于判断是否开始输入新的数字
// 定义一个构造方法,用于初始化计算器
public jisuanji() {
// 调用父类的构造方法,设置窗口标题为“简易计算器”
super("简易计算器");
// 设置窗口大小为300*300像素
setSize(300, 300);
// 设置窗口关闭时退出程序
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 设置窗口布局为边界布局
setLayout(new BorderLayout());
// 创建一个文本框,设置为不可编辑,居右对齐,字体为20号粗体
textField = new JTextField("0", 12);
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setFont(new Font("Arial", Font.BOLD, 20));
// 创建一个面板,设置为网格布局,4行4列,水平和垂直间距为5像素
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 4, 5, 5));
// 创建一个按钮数组,长度为16
buttons = new JButton[16];
// 循环创建按钮,设置标签,字体和监听器,并添加到面板中
for (int i = 0; i < 16; i++) {
buttons[i] = new JButton(labels[i]);
buttons[i].setFont(new Font("Arial", Font.BOLD, 15));
buttons[i].addActionListener(this);
panel.add(buttons[i]);
}
// 将文本框添加到窗口北部
add(textField, BorderLayout.NORTH);
// 将面板添加到窗口中部
add(panel, BorderLayout.CENTER);
// 设置窗口可见
setVisible(true);
}
// 实现ActionListener接口的方法,处理按钮点击事件
public void actionPerformed(ActionEvent e) {
// 获取事件源,即被点击的按钮
JButton button = (JButton) e.getSource();
// 获取按钮上的标签文字
String label = button.getText();
// 判断标签文字是数字还是运算符
if (label.equals("+") || label.equals("-") || label.equals("*") || label.equals("/") || label.equals("=")) {
// 如果是运算符,调用calculate方法进行计算,并将结果显示在文本框中
calculate(Double.parseDouble(textField.getText()));
operator = label;
start = true;
} else {
// 如果是数字或小数点,判断是否开始输入新的数字
if (start) {
// 如果是开始输入新的数字,将文本框内容设置为标签文字,并将开始标志设为false
textField.setText(label);
start = false;
} else {
// 如果不是开始输入新的数字,将文本框内容追加标签文字
textField.setText(textField.getText() + label);
}
}
}
// 定义一个calculate方法,用于进行四则运算
public void calculate(double n) {
// 判断运算符变量的值,进行相应的计算
switch (operator) {
case "+":
result += n;
break;
case "-":
result -= n;
break;
case "*":
result *= n;
break;
case "/":
result /= n;
break;
case "=":
result = n;
break;
}
// 将结果变量的值转换为字符串,显示在文本框中
textField.setText("" + result);
}
// 定义一个main方法,用于启动程序
public static void main(String[] args) {
// 创建一个Calculator对象
new jisuanji();
}
}