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实现排队论的原理

    Java 实现排队论的原理 什么是排队论 排队论是一种数学模型,用来研究当需求超过资源时如何最优地使用资源。排队论可以用于优化系统、服务、流程等,以保证资源利用率最高并提供最佳的服务质量。 Java 实现排队论 Java 可以通过不同的算法和库来实现排队论的模型。以下是一些常用的 Java 库和算法: 1. SimJava SimJava 是一种面向对象的、…

    Java 2023年5月18日
    00
  • java web中对json的使用详解

    Java Web中对JSON的使用详解 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用中的前后端数据传输。JSON格式数据本质上是一个JavaScript对象,采用键值对的方式存储数据。 JSON与Java的关系 Java中有许多开源的JSON库,如Jackson、Gson、Fa…

    Java 2023年5月26日
    00
  • Spring+MongoDB实现登录注册功能

    下面就为你讲解如何使用Spring和MongoDB实现登录注册功能。 准备工作 安装并启动MongoDB服务器 创建Maven项目,引入所需依赖 xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…

    Java 2023年6月15日
    00
  • 如何实现线程安全的并发容器?

    以下是关于如何实现线程安全的并发容器的完整使用攻略: 什么是线程安全的并发容器? 线程安全并发容器是指在多线程环境下,多个线程可以同时访问容器中的元素,而不会出现数据不一致或程序崩溃等问题。在多线程编程中,线程安全的并发容器是非常重要的,因为多个线程同时访问容器,会出现线程争用的问题,导致数据不一致或程序崩溃。 如何实现线程安全的并发容器? 为了实现线程安全…

    Java 2023年5月12日
    00
  • Java微信小程序oss图片上传的实现方法

    我很乐意为你介绍“Java微信小程序oss图片上传的实现方法”的完整攻略。 简介 微信小程序是基于微信平台提供的一种新型应用,其天生具备了社交和强大的传播能力。作为一种重要的互联应用,微信小程序在业界受到广泛关注和应用。本文主要讲解在微信小程序中使用OSS存储来实现图片上传的相关知识和具体操作。 前置知识 在开始讲解具体实现方法之前,有几个重要的前置知识需要…

    Java 2023年5月23日
    00
  • JAVA使用DBUtils操作数据库

    下面是“JAVA使用DBUtils操作数据库”的完整攻略。 简介 DBUtils是Apache组织基于JDBC封装的轻量级工具类库,可以实现JDBC的基本功能,同时大大简化了JDBC的开发流程。使用DBUtils可以少写大量重复代码,并且使代码更具可读性和可维护性。 使用步骤 第一步:添加DBUtils依赖 在Maven项目中,只需要在pom.xml文件中添…

    Java 2023年5月19日
    00
  • Java String类详解_动力节点Java学院整理

    Java String类详解 在Java中,String类是一个非常重要的类。本篇文章将对Java String类进行详细的讲解,包括String类的定义、String类的常用方法、String类与其他数据类型的转换以及String类的不可变性等。 String类的定义 在Java中,String类是一个表示字符串的类。每个字符串都是由多个字符组成的字符序列…

    Java 2023年5月26日
    00
  • Spring AOP统一功能处理示例代码

    下面是关于“Spring AOP统一功能处理示例代码”的完整攻略: 1. 概述 AOP(Aspect Oriented Programming)是面向切面编程的缩写。它是一种新的编程思想,广泛应用于业务逻辑与系统设计中,目的是提高系统的可维护性、可扩展性和可复用性。Spring AOP是Spring框架中的一个模块,基于动态代理技术,实现了程序的非侵入式管理…

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