编辑代码

import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  

public class SimpleCalculator extends JFrame implements ActionListener {  
    // GUI组件  
    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();  
    }  
}