From 1986e01de6c0eee543fd566b86f7fbb2413c57c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=AE=89=E7=A8=8B?= <3207699400@qq.com> Date: Thu, 10 Oct 2024 16:50:31 +0800 Subject: [PATCH] hac1 --- SimpleCalculator.java | 127 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 SimpleCalculator.java diff --git a/SimpleCalculator.java b/SimpleCalculator.java new file mode 100644 index 0000000..384a441 --- /dev/null +++ b/SimpleCalculator.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(); + } +}