commit 9e122a9ec79ff5fbe5075a0a0afea5185741498d Author: xzk <1423665680@qq> Date: Thu Oct 17 16:50:59 2024 +0800 第一次修改 diff --git a/src/xzk/Calculator.java b/src/xzk/Calculator.java new file mode 100644 index 0000000..a055bd7 --- /dev/null +++ b/src/xzk/Calculator.java @@ -0,0 +1,127 @@ +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(); + } +}