import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleCalculator extends JFrame implements ActionListener {
private JTextField textField;
private JButton[] numberButtons;
private JButton[] functionButtons;
private JButton addButton, subButton, mulButton, divButton, equButton, delButton, clrButton;
private JPanel panel;
private double num1=0, num2=0, result=0;
private char operator;
public SimpleCalculator() {
setTitle("简单计算器");
setSize(400, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
textField = new JTextField();
textField.setBounds(30, 40, 340, 40);
textField.setFont(new Font("Arial", Font.BOLD, 24));
add(textField);
String[] buttonLabels = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", "C", "=", "+"
};
numberButtons = new JButton[10];
functionButtons = new JButton[]{addButton, subButton, mulButton, divButton, equButton, clrButton};
panel = new JPanel();
panel.setLayout(new GridLayout(4, 4, 10, 10));
int index = 0;
for (String label : buttonLabels) {
JButton button = new JButton(label);
button.setFont(new Font("Arial", Font.PLAIN, 24));
button.addActionListener(this);
panel.add(button);
if (Character.isDigit(label.charAt(0))) {
numberButtons[index] = button;
index++;
} else {
switch (label) {
case "+":
addButton = button;
break;
case "-":
subButton = button;
break;
case "*":
mulButton = button;
break;
case "/":
divButton = button;
break;
case "=":
equButton = button;
break;
case "C":
clrButton = button;
break;
}
}
}
panel.setBounds(30, 100, 340, 340);
add(panel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.charAt(0) >= '0' && command.charAt(0) <= '9') {
textField.setText(textField.getText() + command);
} else if (command.charAt(0) == 'C') {
textField.setText("");
num1 = num2 = result = 0;
operator = ' ';
} else if (command.charAt(0) == '=') {
num2 = Double.parseDouble(textField.getText());
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
textField.setText(String.valueOf(result));
num1 = result;
} else {
if (!textField.getText().isEmpty()) {
num1 = Double.parseDouble(textField.getText());
operator = command.charAt(0);
textField.setText("");
}
}
}
public static void main(String[] args) {
new SimpleCalculator();
}
}