diff --git a/.idea/.gitignore b/.idea/.gitignore
index 35410ca..13566b8 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -1,7 +1,7 @@
-# 默认忽略的文件
+# Default ignored files
/shelf/
/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
+# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
diff --git a/.idea/compute.iml b/.idea/compute.iml
deleted file mode 100644
index c90834f..0000000
--- a/.idea/compute.iml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/dictionaries b/.idea/dictionaries
deleted file mode 100644
index 74fa4f7..0000000
--- a/.idea/dictionaries
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8ed5f34..fb243bb 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 56c7c6c..1095a15 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1dd..94a25f7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index d69f741..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# compute
-
diff --git a/src/compute/SimpleCalculator.java b/src/compute/SimpleCalculator.java
index 38e6ade..d09d3cc 100644
--- a/src/compute/SimpleCalculator.java
+++ b/src/compute/SimpleCalculator.java
@@ -1,7 +1,9 @@
package compute;
-
import javax.swing.*;
import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
public class SimpleCalculator {
@@ -10,128 +12,82 @@ public class SimpleCalculator {
private double num1;
private double num2;
private String operator;
- private double memory; // Memory for M+, M-, MR, and MC functionality
public SimpleCalculator() {
frame = new JFrame("简单计算器");
inputField = new JTextField();
inputField.setEditable(false);
- inputField.setHorizontalAlignment(SwingConstants.RIGHT);
- inputField.setFont(new Font("Arial", Font.BOLD, 24));
- inputField.setPreferredSize(new Dimension(400, 50));
+ inputField.setFont(new Font("Arial", Font.PLAIN, 24));
+ inputField.setHorizontalAlignment(JTextField.RIGHT);
// 创建按钮
- JButton btn1 = createButton("1");
- JButton btn2 = createButton("2");
- JButton btn3 = createButton("3");
- JButton btn4 = createButton("4");
- JButton btn5 = createButton("5");
- JButton btn6 = createButton("6");
- JButton btn7 = createButton("7");
- JButton btn8 = createButton("8");
- JButton btn9 = createButton("9");
- JButton btn0 = createButton("0");
- JButton btnAdd = createButton("+");
- JButton btnSubtract = createButton("-");
- JButton btnMultiply = createButton("*");
- JButton btnDivide = createButton("/");
- JButton btnEqual = createButton("=");
- JButton btnClear = createButton("C");
- JButton btnDecimal = createButton(".");
- JButton btnNegate = createButton("+/-");
- JButton btnMPlus = createButton("M+");
- JButton btnMMinus = createButton("M-");
- JButton btnMR = createButton("MR");
- JButton btnMC = createButton("MC");
+ JButton[] buttons = new JButton[16];
+ String[] buttonLabels = {"7", "8", "9", "/",
+ "4", "5", "6", "*",
+ "1", "2", "3", "-",
+ "C", "0", "=", "+"};
+
+ for (int i = 0; i < buttonLabels.length; i++) {
+ buttons[i] = new JButton(buttonLabels[i]);
+ buttons[i].setFont(new Font("Arial", Font.PLAIN, 24));
+ buttons[i].setFocusable(false);
+ buttons[i].setBackground(Color.LIGHT_GRAY);
+ buttons[i].setBorder(BorderFactory.createLineBorder(Color.GRAY));
+ final String label = buttonLabels[i];
+ buttons[i].addActionListener(e -> handleButtonClick(label));
+ }
// 设置布局
JPanel panel = new JPanel();
- panel.setLayout(new GridLayout(6, 4, 5, 5)); // 网格布局,间距为5像素
- panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
- panel.add(btn7);
- panel.add(btn8);
- panel.add(btn9);
- panel.add(btnDivide);
- panel.add(btn4);
- panel.add(btn5);
- panel.add(btn6);
- panel.add(btnMultiply);
- panel.add(btn1);
- panel.add(btn2);
- panel.add(btn3);
- panel.add(btnSubtract);
- panel.add(btn0);
- panel.add(btnDecimal);
- panel.add(btnNegate);
- panel.add(btnAdd);
- panel.add(btnClear);
- panel.add(btnEqual);
- panel.add(btnMPlus);
- panel.add(btnMMinus);
- panel.add(btnMR);
- panel.add(btnMC);
-
- // 添加事件监听器
- btn1.addActionListener(e -> appendToInputField("1"));
- btn2.addActionListener(e -> appendToInputField("2"));
- btn3.addActionListener(e -> appendToInputField("3"));
- btn4.addActionListener(e -> appendToInputField("4"));
- btn5.addActionListener(e -> appendToInputField("5"));
- btn6.addActionListener(e -> appendToInputField("6"));
- btn7.addActionListener(e -> appendToInputField("7"));
- btn8.addActionListener(e -> appendToInputField("8"));
- btn9.addActionListener(e -> appendToInputField("9"));
- btn0.addActionListener(e -> appendToInputField("0"));
- btnDecimal.addActionListener(e -> appendDecimal());
- btnNegate.addActionListener(e -> negateValue());
-
- btnAdd.addActionListener(e -> setOperator("+"));
- btnSubtract.addActionListener(e -> setOperator("-"));
- btnMultiply.addActionListener(e -> setOperator("*"));
- btnDivide.addActionListener(e -> setOperator("/"));
-
- btnEqual.addActionListener(e -> calculateResult());
- btnClear.addActionListener(e -> clearInput());
- btnMPlus.addActionListener(e -> memoryPlus());
- btnMMinus.addActionListener(e -> memoryMinus());
- btnMR.addActionListener(e -> memoryRecall());
- btnMC.addActionListener(e -> memoryClear());
+ panel.setLayout(new GridLayout(4, 4, 10, 10));
+ for (JButton button : buttons) {
+ panel.add(button);
+ }
// 设置窗体
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(400, 600); // 调整窗体大小
- frame.setLayout(new BorderLayout(5, 5));
+ frame.setSize(400, 400);
+ frame.setLayout(new BorderLayout());
frame.add(inputField, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
+ frame.setLocationRelativeTo(null); // 窗口居中
+ frame.addKeyListener(new KeyAdapter() { // 支持键盘输入
+ @Override
+ public void keyPressed(KeyEvent e) {
+ char keyChar = e.getKeyChar();
+ if (Character.isDigit(keyChar) || keyChar == '.' || "+-*/=".indexOf(keyChar) >= 0) {
+ handleButtonClick(String.valueOf(keyChar));
+ }
+ if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+ clearInput();
+ }
+ }
+ });
}
- private JButton createButton(String text) {
- JButton button = new JButton(text);
- button.setFont(new Font("Arial", Font.PLAIN, 18));
- button.setPreferredSize(new Dimension(80, 80));
- button.setBackground(Color.LIGHT_GRAY);
- button.setFocusPainted(false);
- return button;
+ private void handleButtonClick(String label) {
+ switch (label) {
+ case "C":
+ clearInput();
+ break;
+ case "=":
+ calculateResult();
+ break;
+ default:
+ if ("+-*/".contains(label)) {
+ setOperator(label);
+ } else {
+ appendToInputField(label);
+ }
+ break;
+ }
}
private void appendToInputField(String value) {
inputField.setText(inputField.getText() + value);
}
- private void appendDecimal() {
- if (!inputField.getText().contains(".")) {
- inputField.setText(inputField.getText() + ".");
- }
- }
-
- private void negateValue() {
- if (!inputField.getText().isEmpty()) {
- double value = Double.parseDouble(inputField.getText());
- inputField.setText(String.valueOf(value * -1));
- }
- }
-
private void setOperator(String op) {
num1 = Double.parseDouble(inputField.getText());
operator = op;
@@ -164,42 +120,16 @@ public class SimpleCalculator {
}
inputField.setText(String.valueOf(result));
} catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
+ JOptionPane.showMessageDialog(frame, "无效输入,请检查。");
}
}
private void clearInput() {
inputField.setText("");
- num1 = 0;
- num2 = 0;
+ num1 = num2 = 0;
operator = "";
}
- private void memoryPlus() {
- try {
- memory += Double.parseDouble(inputField.getText());
- } catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
- }
- }
-
- private void memoryMinus() {
- try {
- memory -= Double.parseDouble(inputField.getText());
- } catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
- }
- }
-
- private void memoryRecall() {
- inputField.setText(String.valueOf(memory));
- }
-
- private void memoryClear() {
- memory = 0;
- }
-
-
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleCalculator::new);
}