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编程通过list接口实现数据的增删改查代码示例

    Java编程通过list接口实现数据的增删改查是非常常见的需求。下面我将详细讲解这个完整攻略,其中包括以下几个部分: list接口的简介和操作方式 如何实现数据的增删改查 两个具体的示例说明 1. list接口的简介和操作方式 List接口是Java Collections(集合)框架中的一种,它继承自Collection接口。List中的元素是有序的,可以…

    Java 2023年5月23日
    00
  • SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示

    首先对于这个攻略的标题,我们可以进行分析理解。 “SSH框架网上商城项目”:这个部分是指网上商城项目所使用的技术框架或开发方式,其中SSH框架通常指的是Spring + Struts2 + Hibernate。 “第16战”:这个部分是指在整个项目中,这是第16个完成的模块或任务。 “Hibernate二级缓存处理”:这个部分是指在这个模块中,我们要讲解的是…

    Java 2023年5月20日
    00
  • 快速学习JavaWeb中监听器(Listener)的使用方法

    我将为您详细讲解快速学习JavaWeb中监听器的使用方法。 一、什么是监听器 在 JavaWeb 中,监听器(Listener)是一种特殊的对象,能够监听 Web 应用程序运行时所发生的事件,并对这些事件作出相应的反应。 二、监听器的使用方法 1. 编写监听器类 监听器作为一个独立的 Java 类,需要实现对应的监听器接口。在 JavaWeb 中,常用的监听…

    Java 2023年6月15日
    00
  • 详解Java8 CompletableFuture的并行处理用法

    详解Java8 CompletableFuture的并行处理用法 前言 CompletableFuture 是 Java 8 中新增的一个非常强大的异步编程工具。它提供了非常完善的异步编程配套方案,让 Java 开发人员能够在不使用传统的回调编程方式的前提下,编写出高效、可读、可维护的异步代码。 CompletableFuture 的强大体现在它不仅仅支持异…

    Java 2023年5月19日
    00
  • 使用 Java 类 实现Http协议

    使用Java类实现Http协议的步骤如下: 1. 了解HTTP协议 HTTP协议是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。其规范有多个版本,包括HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0等。在使用Java类实现HTTP协议之前,需要了解HTTP协议的基本原理和规范。 2. 使用Java类发送HTTP请求 Ja…

    Java 2023年5月18日
    00
  • 一文带你彻底搞懂Lambda表达式

    一文带你彻底搞懂Lambda表达式 什么是Lambda表达式 Lambda表达式是Java 8中引入的新特性,它是一种允许我们以函数式编程的方式编写代码的技术。Lambda表达式可以看成是一种匿名方法,不需要像传统方法一样先声明后调用,而是在需要的时候直接调用。它可以作为参数传递给其他方法或者返回一个函数。 Lambda表达式的语法类似于数学中的函数,由多个…

    Java 2023年5月26日
    00
  • 详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎

    Sure,下面我会详细讲解“详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎”的完整攻略。 简介 Thymeleaf 是一个用于 Web 与独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是提供一种优雅和高度可维护的创建 XHTML / HTML5 的模板的方式;同时也可以非常轻松地拓展为JSP等模板引擎,…

    Java 2023年6月15日
    00
  • 分享Java常用几种加密算法(四种)

    分享Java常用几种加密算法(四种) 前言 随着互联网的发展,网络安全问题越来越受到重视,数据的安全性也越来越得到关注,特别是对于一些交易、存储的敏感数据。在这样的背景下,加密算法逐渐被广泛应用于数据的加密、解密、防篡改等安全领域。Java作为一种流行的编程语言,提供了许多常用的加密算法,本文将介绍Java常用的四种加密算法。 对称加密算法 对称加密算法是指…

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