Java swing实现的计算器功能完整实例

yizhihongxing

下面我将详细讲解如何实现“Java swing实现的计算器功能完整实例”。

简介

在介绍具体的实现方法之前,先简单介绍一下Java Swing。Swing是Java平台上的一组GUI(Graphical User Interface)构件库。它提供了一整套丰富的GUI构件,例如按钮、文本框、标签等。在Java中,通过将这些构件进行组合,就可以构建出各种各样的窗口和对话框。

本文的目标是使用Java Swing实现一个简单的计算器,可以完成加、减、乘、除的四则运算。

环境

在开始实现之前,先介绍一下需要用到的环境:

  • JDK 8及以上版本
  • Eclipse或者其他Java IDE

实现步骤

1. 创建GUI窗口

首先需要创建一个GUI窗口,这个窗口用于显示计算器的界面。其中需要包含一个文本框用于显示计算结果,以及多个按钮用于输入数字和运算符。

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

public class Calculator {
  public static void main(String[] args) {
    // 创建窗口
    JFrame frame = new JFrame("Calculator");
    // 设置大小和位置
    frame.setSize(300, 400);
    frame.setLocationRelativeTo(null);
    // 设置窗口关闭时退出程序
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 创建文本框
    JTextField textField = new JTextField();
    frame.add(textField, "North");

    // 创建按钮
    JButton button1 = new JButton("1");
    JButton button2 = new JButton("2");
    JButton button3 = new JButton("3");
    // ...
    JButton buttonAdd = new JButton("+");
    JButton buttonSub = new JButton("-");
    JButton buttonMul = new JButton("*");
    JButton buttonDiv = new JButton("/");
    JButton buttonEqual = new JButton("=");

    // 将按钮添加到窗口
    // ...

    // 显示窗口
    frame.setVisible(true);
  }
}

2. 实现按钮点击事件

接下来需要实现按钮的点击事件,以便用户输入数字和运算符后能够计算结果。这里以实现加法为例,其他运算符也是类似的。

  • 定义一个变量result用于存储计算结果
  • 在加法按钮的点击事件中,获取文本框中的数字,将其转换为整数类型,然后加上result的值,最后将结果显示在文本框中
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

public class Calculator {
  public static void main(String[] args) {
    // ...

    // 定义一个变量result用于存储计算结果
    int result = 0;

    // 创建按钮
    JButton button1 = new JButton("1");
    JButton button2 = new JButton("2");
    JButton button3 = new JButton("3");
    // ...
    JButton buttonAdd = new JButton("+");
    JButton buttonSub = new JButton("-");
    JButton buttonMul = new JButton("*");
    JButton buttonDiv = new JButton("/");
    JButton buttonEqual = new JButton("=");

    // 在加法按钮的点击事件中,实现加法运算
    buttonAdd.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        result += number;
        textField.setText(Integer.toString(result));
      }
    });

    // ...

    // 将按钮添加到窗口
    // ...

    // 显示窗口
    frame.setVisible(true);
  }
}

3. 实现其他运算符

实现其他运算符的方法和实现加法的方法类似。以下是乘法的实现方法。

// 在乘法按钮的点击事件中,实现乘法运算
buttonMul.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
    int number = Integer.parseInt(textField.getText());
    result *= number;
    textField.setText(Integer.toString(result));
  }
});

4. 实现清零和等于功能

为了用户操作的方便,需要添加清零和等于功能。以下是实现方法。

// 创建清零按钮
JButton buttonClear = new JButton("C");
// 在清零按钮的点击事件中,将结果和表达式全部清零
buttonClear.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
    result = 0;
    textField.setText("");
  }
});

// 创建等于按钮
JButton buttonEqual = new JButton("=");
// 在等于按钮的点击事件中,计算表达式的结果并显示在文本框中
buttonEqual.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
    int number = Integer.parseInt(textField.getText());
    switch(operator) {
      case "+":
        result += number;
        break;
      case "-":
        result -= number;
        break;
      case "*":
        result *= number;
        break;
      case "/":
        result /= number;
        break;
      default:
        break;
    }
    textField.setText(Integer.toString(result));
  }
});

5. 完整代码

将以上实现方法整合起来,得到完整的Java Swing计算器实现代码如下。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

public class Calculator {
  public static void main(String[] args) {
    // 创建窗口
    JFrame frame = new JFrame("Calculator");
    // 设置大小和位置
    frame.setSize(300, 400);
    frame.setLocationRelativeTo(null);
    // 设置窗口关闭时退出程序
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 创建文本框
    JTextField textField = new JTextField();
    frame.add(textField, "North");

    // 创建按钮
    JButton button1 = new JButton("1");
    JButton button2 = new JButton("2");
    JButton button3 = new JButton("3");
    JButton button4 = new JButton("4");
    JButton button5 = new JButton("5");
    JButton button6 = new JButton("6");
    JButton button7 = new JButton("7");
    JButton button8 = new JButton("8");
    JButton button9 = new JButton("9");
    JButton button0 = new JButton("0");
    JButton buttonAdd = new JButton("+");
    JButton buttonSub = new JButton("-");
    JButton buttonMul = new JButton("*");
    JButton buttonDiv = new JButton("/");
    JButton buttonClear = new JButton("C");
    JButton buttonEqual = new JButton("=");

    // 定义一个变量result用于存储计算结果
    int result = 0;

    // 在数字按钮的点击事件中,将数字添加到文本框中
    button1.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        textField.setText(textField.getText() + "1");
      }
    });

    // ...

    // 在加法按钮的点击事件中,实现加法运算
    buttonAdd.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        result += number;
        textField.setText(Integer.toString(result));
      }
    });

    // 在减法按钮的点击事件中,实现减法运算
    buttonSub.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        result -= number;
        textField.setText(Integer.toString(result));
      }
    });

    // 在乘法按钮的点击事件中,实现乘法运算
    buttonMul.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        result *= number;
        textField.setText(Integer.toString(result));
      }
    });

    // 在除法按钮的点击事件中,实现除法运算
    buttonDiv.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        result /= number;
        textField.setText(Integer.toString(result));
      }
    });

    // 在清零按钮的点击事件中,将结果和表达式全部清零
    buttonClear.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        result = 0;
        textField.setText("");
      }
    });

    // 在等于按钮的点击事件中,计算表达式的结果并显示在文本框中
    buttonEqual.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        int number = Integer.parseInt(textField.getText());
        switch(operator) {
          case "+":
            result += number;
            break;
          case "-":
            result -= number;
            break;
          case "*":
            result *= number;
            break;
          case "/":
            result /= number;
            break;
          default:
            break;
        }
        textField.setText(Integer.toString(result));
      }
    });

    // 将按钮添加到窗口
    frame.add(button1, "Center");
    frame.add(button2, "Center");
    frame.add(button3, "Center");
    frame.add(button4, "Center");
    frame.add(button5, "Center");
    frame.add(button6, "Center");
    frame.add(button7, "Center");
    frame.add(button8, "Center");
    frame.add(button9, "Center");
    frame.add(button0, "Center");
    frame.add(buttonAdd, "Center");
    frame.add(buttonSub, "Center");
    frame.add(buttonMul, "Center");
    frame.add(buttonDiv, "Center");
    frame.add(buttonClear, "Center");
    frame.add(buttonEqual, "Center");

    // 显示窗口
    frame.setVisible(true);
  }
}

至此,Java Swing计算器的实现就完成了。可以将程序运行,尝试输入数字和运算符,然后得到结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java swing实现的计算器功能完整实例 - Python技术站

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

相关文章

  • 简单了解Java断言利器AssertJ原理及用法

    Java断言利器AssertJ AssertJ 是一个功能强大的 Java 断言库,可以极大地简化编写测试用例时的代码书写。它提供了丰富的断言方法,使得我们可以轻松地对测试数据进行校验,同时还附带有有用的错误提示信息,在测试失败时能够很快定位到问题所在。 AssertJ的原理 AssertJ 的实现原理是基于 Java 的 Builder 模式,使用方法链来…

    Java 2023年5月26日
    00
  • 详解Spring中BeanUtils工具类的使用

    详解Spring中BeanUtils工具类的使用 什么是BeanUtils BeanUtils是Apachecommons的一个工具类库。它提供了一些方法来方便地实现JavaBean的属性复制、类型转换等操作。在Spring中,BeanUtils也被广泛应用在属性复制、对象转换等操作中。 BeanUtils的优点 BeanUtils具有以下几个优点: 简单易…

    Java 2023年5月19日
    00
  • 常见的垃圾收集器算法有哪些?

    常见的垃圾收集器算法有哪些? 在大部分编程语言中,动态内存分配是必不可少的。为了防止内存泄漏,需要进行垃圾回收(Garbage Collection,简称GC),即在进行垃圾回收时收集并释放不再需要使用的存储器资源,在内存使用过多而导致程序出现异常时,垃圾回收是很重要的。而垃圾回收主要有2类算法 — 标记-清扫(Mark and Sweep)和复制式(Cop…

    Java 2023年5月10日
    00
  • Java中Thread.join()的使用方法

    下面我来详细讲解Java中Thread.join()的使用方法。 Thread.join()方法 Thread.join()方法是一个用于等待线程结束的方法。在执行线程时,可以调用join()方法,让当前线程等待被调用join()方法的线程执行完成后才继续往下执行。 语法 public final void join() throws Interrupted…

    Java 2023年5月19日
    00
  • 基于JSON实现传输byte数组过程解析

    首先,我们需要明确一下,JSON是一种轻量级的数据交换格式,它使用文本格式,以键值对的形式存储数据。而byte数组是将二进制数据以字节形式存储在内存中,传输byte数组需要将其转换为二进制格式进行传输。 在使用JSON传输byte数组之前,需要将byte数组转换为Base64编码格式,这样才能够将其以字符串形式嵌入JSON对象中。以下是基于JSON实现传输b…

    Java 2023年5月26日
    00
  • 详解Java 类的加载机制

    详解Java 类的加载机制 Java是一种面向对象的编程语言,其面向对象的本质体现在Java类的使用上。在Java中,类是一种由Java源码编写的框架,其封装了需要处理的数据以及需要执行的方法,是Java程序的基本模块。Java类的加载是指将类名转换成Java虚拟机中的一个对象的过程,它是Java中关键的组成部分之一。本篇文章将进行详细讲解Java类的加载机…

    Java 2023年6月15日
    00
  • java实现商品管理系统

    Java实现商品管理系统攻略 1. 数据库设计 首先,我们需要设计一个能够存储商品信息的数据库。通常情况下,我们需要为每个商品定义唯一的编号、名称、类型、价格等属性。 以下是一个简单的商品信息表的SQL语句: CREATE TABLE Product( id INT PRIMARY KEY auto_increment, name VARCHAR(50) N…

    Java 2023年5月19日
    00
  • java对象序列化操作实例分析

    Java对象序列化操作 简介 Java对象序列化是指将Java对象转换为字节流,以便于数据传输、持久化和分布式应用等场景下的使用。其作用是将Java对象序列化为数据流方便在网络间传输或在本地存储,以及反序列化操作使其还原为Java对象。 序列化对象 对于待序列化的Java对象,需要实现 Serializable 接口。以下是一个示例: import java…

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