package xzk; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calculator extends JFrame implements ActionListener { private JTextField num1Field, num2Field, resultField; private JComboBox operatorBox; public Calculator() { super("简单计算器"); setLayout(new BorderLayout()); // 创建面板 JPanel inputPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); // 设置组件之间的间距 // 创建输入字段和标签 gbc.gridx = 0; gbc.gridy = 0; inputPanel.add(new JLabel("第一个数字:"), gbc); gbc.gridx = 1; num1Field = new JTextField(10); inputPanel.add(num1Field, gbc); gbc.gridy = 1; gbc.gridx = 0; inputPanel.add(new JLabel("第二个数字:"), gbc); gbc.gridx = 1; num2Field = new JTextField(10); inputPanel.add(num2Field, gbc); gbc.gridy = 2; gbc.gridx = 0; inputPanel.add(new JLabel("操作符:"), gbc); gbc.gridx = 1; operatorBox = new JComboBox<>(new String[]{"+", "-", "*", "/", "%"}); inputPanel.add(operatorBox, gbc); gbc.gridy = 3; gbc.gridx = 0; inputPanel.add(new JLabel("结果:"), gbc); gbc.gridx = 1; resultField = new JTextField(10); resultField.setEditable(false); inputPanel.add(resultField, gbc); // 创建计算按钮 JButton calculateButton = new JButton("计算"); gbc.gridy = 4; gbc.gridx = 0; gbc.gridwidth = 2; gbc.fill = GridBagConstraints.HORIZONTAL; inputPanel.add(calculateButton, gbc); // 添加事件监听器 calculateButton.addActionListener(this); // 设置面板背景色 inputPanel.setBackground(Color.LIGHT_GRAY); // 将面板添加到窗口 add(inputPanel, BorderLayout.CENTER); // 设置窗口属性 setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 窗口居中显示 setVisible(true); } @Override public void actionPerformed(ActionEvent e) { try { double num1 = Double.parseDouble(num1Field.getText()); double num2 = Double.parseDouble(num2Field.getText()); String operator = (String) operatorBox.getSelectedItem(); double result; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": if (num2 != 0) { result = num1 / num2; } else { JOptionPane.showMessageDialog(this, "错误:除数不能为零"); return; } break; case "%": if (num2 != 0) { result = num1 % num2; } else { JOptionPane.showMessageDialog(this, "错误:除数不能为零"); return; } break; default: JOptionPane.showMessageDialog(this, "无效的操作符!"); return; } resultField.setText(String.format("%.2f", result)); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(this, "请输入有效的数字"); } } public static void main(String[] args) { new Calculator(); } }