利用 Java Swing 实现简易计算器程序

本文将使用 Java Swing 库来实现一个简易计算器程序,该程序将提供基本的加减乘除、乘方、开平方等运算功能,并带有图形用户界面,方便用户进行简单的数学运算。

程序功能

该计算器程序将实现以下功能:

  • 整数的加、减、乘、除
  • 乘方、立方、n 次方
  • 开平方、开 n 次方
  • 倒数
  • 三角函数
  • 反三角函数运算

代码实现

以下是用 Java Swing 库实现的简易计算器程序代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator extends JFrame implements ActionListener {
    private JTextField inputField; // 输入框
    private String input = ""; // 记录用户输入的数值
    private String operator = ""; // 记录用户选择的运算符
    private boolean isResultDisplayed = false; // 是否已经显示结果

    public Calculator() {
        super("简易计算器");
        setSize(300, 370);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        // 构建用户界面
        JPanel inputPanel = new JPanel(new BorderLayout()); // 输入框面板
        inputField = new JTextField(20);
        inputField.setEditable(false); // 禁止用户编辑
        inputPanel.add(inputField, BorderLayout.CENTER);

        JPanel buttonPanel = new JPanel(new GridLayout(5, 4, 5, 5)); // 按钮面板
        String[] buttonLabels = {
                "C", "CE", "Back", "/",
                "7", "8", "9", "*",
                "4", "5", "6", "-",
                "1", "2", "3", "+",
                "√", "^", "x^2", "="
        };
        for (String label : buttonLabels) {
            JButton button = new JButton(label);
            button.addActionListener(this); // 为每个按钮注册监听器
            buttonPanel.add(button);
        }

        // 添加面板到窗口
        JPanel contentPane = new JPanel(new BorderLayout());
        contentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        contentPane.add(inputPanel, BorderLayout.NORTH);
        contentPane.add(buttonPanel, BorderLayout.CENTER);
        setContentPane(contentPane);
    }

    // 处理按钮点击事件
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();

        // 处理清除操作
        if (command.equals("C")) {
            input = "";
            operator = "";
            isResultDisplayed = false;
            inputField.setText("");
        }
        // 处理清空操作
        else if (command.equals("CE")) {
            input = "";
            inputField.setText("");
        }
        // 处理删除操作
        else if (command.equals("Back")) {
            if (input.length() > 0) {
                input = input.substring(0, input.length() - 1);
                inputField.setText(input);
            }
        }
        // 处理数字和小数点输入
        else if ("0123456789.".indexOf(command) != -1) {
            if (isResultDisplayed) {
                input = "";
                isResultDisplayed = false;
            }
            input += command;
            inputField.setText(input);
        }
        // 处理运算符输入
        else if ("+-*/^.".indexOf(command) != -1) {
            if (input.length() > 0) {
                operator = command;
                input += operator;
                inputField.setText(input);
            }
        }
        // 处理计算结果操作
        else if (command.equals("=")) {
            if (operator.length() > 0 && input.length() > 0) {
                String[] values = input.split("\\" + operator);
                double num1 = Double.parseDouble(values[0]);
                double num2 = Double.parseDouble(values[1]);
                double result = 0;

                switch (operator) {
                    case "+":
                        result = num1 + num2;
                        break;
                    case "-":
                        result = num1 - num2;
                        break;
                    case "*":
                        result = num1 * num2;
                        break;
                    case "/":
                        result = num1 / num2;
                        break;
                    case "^":
                        result = Math.pow(num1, num2);
                        break;
                }

                input = String.valueOf(result);
                operator = "";
                isResultDisplayed = true;
                inputField.setText(input);
            }
        }
        // 处理开平方操作
        else if (command.equals("√")) {
            if (input.length() > 0) {
                double num = Double.parseDouble(input);
                double result = Math.sqrt(num);
                input = String.valueOf(result);
                isResultDisplayed = true;
                inputField.setText(input);
            }
        }
        // 处理平方操作
        else if (command.equals("x^2")) {
            if (input.length() > 0) {
                double num = Double.parseDouble(input);
                double result = Math.pow(num, 2);
                input = String.valueOf(result);
                isResultDisplayed = true;
                inputField.setText(input);
            }
        }
        // 处理乘方操作
        else if (command.equals("^")) {
            if (input.length() > 0) {
                operator = "^";
                input += operator;
                inputField.setText(input);
            }
        }
    }

    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        calculator.setVisible(true);
    }
}

总结

以上代码展示了如何使用 Java Swing 库实现一个简易计算器程序,该程序的功能相对简单,但包含了基本的界面设计、事件处理、运算逻辑等内容,为学习 Java Swing 提供一个基础示例。用户可以根据需要添加更多功能,例如三角函数、反三角函数运算等。

Java Swing 实现简易计算器程序

原文地址: https://www.cveoy.top/t/topic/oR2C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录