From 4ef784cabd0f21712064bc7a8ea4d0872ca18f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=BD=B3=E5=AA=9B?= <2487706653@qq.com> Date: Wed, 9 Oct 2024 23:09:17 +0800 Subject: [PATCH] =?UTF-8?q?cjy=E8=AE=A1=E7=AE=97=E5=99=A8=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Calculator.java | 80 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Calculator.java diff --git a/Calculator.java b/Calculator.java new file mode 100644 index 0000000..1cb6326 --- /dev/null +++ b/Calculator.java @@ -0,0 +1,80 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.script.ScriptEngineManager; +import javax.script.ScriptEngine; +import javax.script.ScriptException; + +public class Calculator extends JFrame implements ActionListener { + private JTextField display; + private StringBuilder input; + + public Calculator() { + input = new StringBuilder(); + display = new JTextField(); + display.setEditable(false); + display.setFont(new Font("Arial", Font.BOLD, 32)); + display.setHorizontalAlignment(JTextField.RIGHT); + display.setBackground(Color.LIGHT_GRAY); + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(4, 4, 10, 10)); + panel.setBackground(Color.GRAY); + + String[] buttons = { + "7", "8", "9", "/", + "4", "5", "6", "*", + "1", "2", "3", "-", + "C", "0", "=", "+" + }; + + for (String text : buttons) { + JButton button = new JButton(text); + button.setFont(new Font("Arial", Font.PLAIN, 24)); + button.addActionListener(this); + button.setBackground(Color.WHITE); + panel.add(button); + } + + add(display, BorderLayout.NORTH); + add(panel, BorderLayout.CENTER); + + setTitle("Calculator"); + setSize(400, 500); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + } + @Override + public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); + + if (command.charAt(0) == 'C') { + input.setLength(0); + display.setText(""); + } else if (command.charAt(0) == '=') { + try { + double result = evaluate(input.toString()); + display.setText(String.valueOf(result)); + input.setLength(0); + } catch (ScriptException ex) { + display.setText("Error"); + input.setLength(0); + } + } else { + input.append(command); + display.setText(input.toString()); + } + } + + private double evaluate(String expression) throws ScriptException { + ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); + return ((Number) engine.eval(expression)).doubleValue(); + } +//11122222 + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + Calculator calculator = new Calculator(); + calculator.setVisible(true); + }); + } +}