import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField textField; //文本框
private JButton[] buttons; //按钮数组
private String[] buttonLabels = { //按钮标签
"7", "8", "9", "+",
"4", "5", "6", "-",
"1", "2", "3", "*",
"0", ".", "=", "/"
};
private double num1 = 0.0; //第一个数字
private double num2 = 0.0; //第二个数字
private String operator = ""; //运算符
public Calculator() {
super("计算器"); //窗口标题
setLayout(new BorderLayout()); //设置布局
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
//创建文本框
textField = new JTextField();
textField.setFont(new Font("微软雅黑", Font.PLAIN, 20)); //设置字体
textField.setHorizontalAlignment(JTextField.RIGHT); //文本从右侧开始输入
textField.setEditable(false); //不可编辑
add(textField, BorderLayout.NORTH); //添加到窗口的北部
//创建按钮面板
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4)); //设置布局
buttons = new JButton[buttonLabels.length]; //初始化按钮数组
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]); //创建按钮
buttons[i].setFont(new Font("微软雅黑", Font.PLAIN, 20)); //设置字体
buttons[i].addActionListener(this); //添加事件监听器
buttonPanel.add(buttons[i]); //添加到按钮面板
}
add(buttonPanel, BorderLayout.CENTER); //添加到窗口的中央
pack(); //自适应大小
setLocationRelativeTo(null); //居中显示
setVisible(true); //显示窗口
}
//按钮事件处理
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand(); //获取按钮标签
if (label.matches("\\d|\\.")) { //数字或小数点
if (operator.equals("")) { //没有运算符
num1 = num1 * 10 + Double.parseDouble(label); //拼接数字
textField.setText(String.valueOf(num1)); //显示数字
} else { //有运算符
num2 = num2 * 10 + Double.parseDouble(label); //拼接数字
textField.setText(String.valueOf(num2)); //显示数字
}
} else if (label.matches("[+\\-*/]")) { //运算符
operator = label; //保存运算符
} else if (label.equals("=")) { //等于号
double result = 0.0; //结果
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
}
num1 = result; //保存结果
num2 = 0.0; //清空第二个数字
operator = ""; //清空运算符
textField.setText(String.valueOf(result)); //显示结果
} else { //清空按钮
num1 = 0.0; //清空第一个数字
num2 = 0.0; //清空第二个数字
operator = ""; //清空运算符
textField.setText(""); //清空文本框
}
}
public static void main(String[] args) {
new Calculator(); //创建计算器对象
}
}
Java 计算器
最新推荐文章于 2024-07-29 18:00:00 发布