Java Swing编写一个简单的计算器软件

Java Swing是一个强大的GUI工具包,用于编写基于Java的图形界面。下面是编写一个简单的计算器软件的完整攻略:

1.设计图形界面

首先,需要设计图形界面,包括按钮、文本框和标签等控件。可以使用Eclipse或NetBeans等IDE工具来快速创建Swing应用程序。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.SwingConstants;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Calculator extends JFrame {

    private JPanel contentPane;
    private JTextField textField;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Calculator frame = new Calculator();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Calculator() {
        setTitle("Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 250, 330);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setFont(new Font("宋体", Font.BOLD, 20));
        textField.setHorizontalAlignment(SwingConstants.RIGHT);
        textField.setBounds(10, 10, 218, 50);
        contentPane.add(textField);
        textField.setColumns(10);

        JButton btnNewButton_1 = new JButton("1");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "1");
            }
        });
        btnNewButton_1.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_1.setBounds(10, 70, 50, 50);
        contentPane.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("2");
        btnNewButton_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "2");
            }
        });
        btnNewButton_2.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_2.setBounds(70, 70, 50, 50);
        contentPane.add(btnNewButton_2);

        JButton btnNewButton_3 = new JButton("3");
        btnNewButton_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "3");
            }
        });
        btnNewButton_3.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_3.setBounds(130, 70, 50, 50);
        contentPane.add(btnNewButton_3);

        JButton btnNewButton_4 = new JButton("4");
        btnNewButton_4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "4");
            }
        });
        btnNewButton_4.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_4.setBounds(10, 130, 50, 50);
        contentPane.add(btnNewButton_4);

        JButton btnNewButton_5 = new JButton("5");
        btnNewButton_5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "5");
            }
        });
        btnNewButton_5.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_5.setBounds(70, 130, 50, 50);
        contentPane.add(btnNewButton_5);

        JButton btnNewButton_6 = new JButton("6");
        btnNewButton_6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "6");
            }
        });
        btnNewButton_6.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_6.setBounds(130, 130, 50, 50);
        contentPane.add(btnNewButton_6);

        JButton btnNewButton_7 = new JButton("7");
        btnNewButton_7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "7");
            }
        });
        btnNewButton_7.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_7.setBounds(10, 190, 50, 50);
        contentPane.add(btnNewButton_7);

        JButton btnNewButton_8 = new JButton("8");
        btnNewButton_8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "8");
            }
        });
        btnNewButton_8.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_8.setBounds(70, 190, 50, 50);
        contentPane.add(btnNewButton_8);

        JButton btnNewButton_9 = new JButton("9");
        btnNewButton_9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "9");
            }
        });
        btnNewButton_9.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_9.setBounds(130, 190, 50, 50);
        contentPane.add(btnNewButton_9);

        JButton btnNewButton_10 = new JButton("0");
        btnNewButton_10.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "0");
            }
        });
        btnNewButton_10.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_10.setBounds(70, 250, 50, 50);
        contentPane.add(btnNewButton_10);

        JButton btnNewButton_11 = new JButton("+");
        btnNewButton_11.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "+");
            }
        });
        btnNewButton_11.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_11.setBounds(190, 70, 50, 50);
        contentPane.add(btnNewButton_11);

        JButton btnNewButton_12 = new JButton("-");
        btnNewButton_12.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "-");
            }
        });
        btnNewButton_12.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_12.setBounds(190, 130, 50, 50);
        contentPane.add(btnNewButton_12);

        JButton btnNewButton_13 = new JButton("*");
        btnNewButton_13.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "*");
            }
        });
        btnNewButton_13.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_13.setBounds(190, 190, 50, 50);
        contentPane.add(btnNewButton_13);

        JButton btnNewButton_14 = new JButton("/");
        btnNewButton_14.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText() + "/");
            }
        });
        btnNewButton_14.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_14.setBounds(190, 250, 50, 50);
        contentPane.add(btnNewButton_14);

        JButton btnNewButton_15 = new JButton("C");
        btnNewButton_15.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText("");
            }
        });
        btnNewButton_15.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_15.setBounds(130, 250, 50, 50);
        contentPane.add(btnNewButton_15);

        JButton btnNewButton_16 = new JButton("=");
        btnNewButton_16.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int result = 0;
                String[] str = textField.getText().split("\\+|\\-|\\*|\\/");
                if (textField.getText().contains("+")) {
                    result = Integer.parseInt(str[0]) + Integer.parseInt(str[1]);
                } else if (textField.getText().contains("-")) {
                    result = Integer.parseInt(str[0]) - Integer.parseInt(str[1]);
                } else if (textField.getText().contains("*")) {
                    result = Integer.parseInt(str[0]) * Integer.parseInt(str[1]);
                } else if (textField.getText().contains("/")) {
                    result = Integer.parseInt(str[0]) / Integer.parseInt(str[1]);
                }

                textField.setText(String.valueOf(result));
            }
        });
        btnNewButton_16.setFont(new Font("宋体", Font.BOLD, 20));
        btnNewButton_16.setBounds(10, 250, 50, 50);
        contentPane.add(btnNewButton_16);
    }
}

2.实现计算器核心逻辑

在上述代码中,添加了数字、运算符和功能按钮,并为这些按钮添加了监听器。当按钮被单击时,将在文本框中显示相应的字符。而“=”按钮的监听器则实现了计算器的核心逻辑:将输入的字符串分离为数字和运算符,并进行相应的计算,最后将结果显示在文本框中。

 JButton btnNewButton_16 = new JButton("=");
btnNewButton_16.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int result = 0;
        String[] str = textField.getText().split("\\+|\\-|\\*|\\/");
        if (textField.getText().contains("+")) {
            result = Integer.parseInt(str[0]) + Integer.parseInt(str[1]);
        } else if (textField.getText().contains("-")) {
            result = Integer.parseInt(str[0]) - Integer.parseInt(str[1]);
        } else if (textField.getText().contains("*")) {
            result = Integer.parseInt(str[0]) * Integer.parseInt(str[1]);
        } else if (textField.getText().contains("/")) {
            result = Integer.parseInt(str[0]) / Integer.parseInt(str[1]);
        }

        textField.setText(String.valueOf(result));
    }
});

3.示例说明

示例1

当用户输入“5+3”并单击“=”按钮时,程序将计算5+3的值,并将结果8显示在文本框中。

示例2

当用户输入“64”并单击“=”按钮时,程序将计算64的值,并将结果24显示在文本框中。

运行程序之后,用户可以使用鼠标或键盘来输入数字和操作符,计算器将根据用户的输入计算结果。总之,这是一个简单实用的计算器软件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Swing编写一个简单的计算器软件 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java的Struts框架报错“InvalidPathException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“InvalidPathException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置路径,则可能会出现此。在这种情况下,需要检查配置文件以解决此问题。 路径错误:如果路径不正确,则可能会出现此。在这种情况下,需要检查路径以解决此问题。 以下是两个实例: 例 1 如果配置文件中没有…

    Java 2023年5月5日
    00
  • Java基础知识精通二维数组的应用

    关于“Java基础知识精通二维数组的应用”的完整攻略,我将详细介绍如下: 一、了解什么是二维数组 在Java中,二维数组是指由多个一维数组组成的数组,每个一维数组又包含多个元素,相当于一个表格或矩阵。 二维数组的定义格式如下: 类型[][] 数组名 = new 类型[行数][列数]; 例如: int[][] arr = new int[3][2]; //定义…

    Java 2023年5月26日
    00
  • spring Security的自定义用户认证过程详解

    【Spring Security的自定义用户认证过程详解】 介绍 Spring Security是一个流行的安全框架,用于保护Web应用程序和REST API。Spring Security通过AuthenticationManager接口处理认证过程。该接口负责通过认证用户提供的凭据,最终生成一个用于描述身份验证后的用户认证信息 — Authenticat…

    Java 2023年5月20日
    00
  • java 重定义数组的实现方法(与VB的ReDim相像)

    问题:详细讲解“java 重定义数组的实现方法(与VB的ReDim相像)”的完整攻略,过程中至少包含两条示例说明。 回答: 在Java中,数组的长度一旦确定后是不可变的,但有些情况下可能需要动态地改变数组的长度,这就需要对数组进行重新定义。本文将介绍Java中重定义数组的实现方法(与VB的ReDim相似)。 方法一:使用Arrays.copyOf方法 Arr…

    Java 2023年5月26日
    00
  • java8新特性-lambda表达式入门学习心得

    Java 8新特性 – Lambda表达式入门学习心得 什么是Lambda表达式 Lambda表达式在Java 8中被引入,可以简化某些代码的书写。Lambda表达式本质上是一个匿名函数,可以传递给其他方法作为参数并被执行。它可以替代使用匿名内部类的情况,其中传递一个函数作为参数的情况非常常见。 Lambda 表达式语法 Lambda表达式的语法非常简洁。它…

    Java 2023年5月26日
    00
  • Java如何获取数组和字符串的长度(length还是length())

    获取数组和字符串的长度可以使用不同的属性或方法,下面将分别介绍。 一、获取数组长度 获取Java中数组的长度可以使用.length属性,这个属性是数组类型的一个成员,用于返回数组的长度,即数组元素的个数。示例如下: int[] nums = {1, 2, 3, 4, 5}; // 定义整型数组 System.out.println("数组长度为:&…

    Java 2023年5月26日
    00
  • 解决硬盘卡死问题!希捷固件刷写全攻略

    解决硬盘卡死问题!希捷固件刷写全攻略 如果你使用希捷硬盘遇到了卡死问题,可能是由于固件出现了问题。如果这是你的问题,那么刷写固件可能是解决问题的方法。这篇攻略将会讲解如何刷写希捷硬盘的固件。 步骤一:确定硬盘型号和固件版本 在开始刷写过程之前,你需要确定自己硬盘的型号和固件版本。你可以通过命令行查看序列号,也可以在硬盘上查找型号和固件版本号。 例如,在命令行…

    Java 2023年6月15日
    00
  • Java的Struts框架报错“NullChainException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NullChainException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此。在这种情况下,需要检查文件以解决此问题。 链名称:如果链名称不正确,则可能出现此。在这种情况下,需要检查链名称以解决此问题。 以下是两个实例: 例 1 如果配置文件中没有正确配置,则…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部