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

下面我将详细讲解如何实现“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日

相关文章

  • Spring Data JPA实现排序与分页查询超详细流程讲解

    下面就是关于“Spring Data JPA实现排序与分页查询超详细流程讲解”的完整攻略,包含以下内容: 步骤一:导入必要的依赖和配置 首先需要确保在你的项目中已经导入了Spring Data JPA相关依赖,包括spring-data-jpa、hibernate-core、mysql-connector-java等。在pom.xml中添加以下依赖: &lt…

    Java 2023年5月20日
    00
  • 了解java Struts拦截器的相关操作

    了解Java Struts框架和拦截器是非常重要的,因为它们可以帮助提高代码的可重用性和维护性。下面是了解Java Struts拦截器的相关操作的完整攻略。 什么是Java Struts拦截器 拦截器是Java Struts框架中的一个重要组成部分,它允许我们在请求到达目标Action之前或之后跟踪/处理请求和响应。具体地说,它们是一种处理请求和响应的机制,…

    Java 2023年5月20日
    00
  • jsp实现局部刷新页面、异步加载页面的方法

    让我来为您详细讲解一下“JSP实现局部刷新页面、异步加载页面的方法”的完整攻略。 前言 JSP(Java Server Pages)是一种基于Java技术的Web开发技术,它允许开发人员在HTML标签中包含Java代码,并通过编译器将其转换为Java Servlet。JSP通常与MVC(Model-View-Controller)设计模式一起使用,它允许开发…

    Java 2023年6月15日
    00
  • 利用Java中Calendar计算两个日期之间的天数和周数

    我们来详细讲解一下如何利用Java中的Calendar类计算两个日期之间的天数和周数。 步骤一:创建Calendar实例 我们首先要创建两个Calendar对象,来表示两个日期。这里我们可以使用Calendar类的静态方法getInstance()来获取一个默认时区的实例。 Calendar cal1 = Calendar.getInstance(); Ca…

    Java 2023年5月20日
    00
  • Java多线程之readwritelock读写分离的实现代码

    关于Java多线程之readwritelock读写分离的实现代码,我可以给出以下的完整攻略: 1. 什么是读写锁 在多线程编程中,并发访问共享数据是一个很常见且复杂的问题。共享数据的读操作和写操作具有相互冲突的特点,因此需要对其进行同步控制以避免数据冲突的问题。Java中提供了一种读写锁(read-write lock),它可以提高读多写少的并发效率。 读写…

    Java 2023年5月19日
    00
  • java自定义线程模型处理方法分享

    Java自定义线程模型处理方法,指的是基于Java多线程技术,在程序设计中自定义线程模型,以便更好地适应业务需求,达到更好的性能和效果。下面详细讲解 Java自定义线程模型处理方法的完整攻略,包含如下几个部分: 一、什么是Java自定义线程模型处理方法 对于一个Java应用程序来说,线程模型是至关重要的。如果线程模型设计好了,可以带来更好的性能和应用程序体验…

    Java 2023年5月26日
    00
  • 详解tomcat各个端口的作用

    详解Tomcat各个端口的作用 本文将详细介绍 Tomcat 各个端口的作用,帮助用户更好地了解 Tomcat 的运行机制。 Tomcat 的端口 Tomcat 有三个最重要的端口,它们分别是: 8080: HTTP 请求的默认端口,用于 Web 应用程序和客户端之间的通信。 8005: Shutdown 端口,用于远程关闭 Tomcat 服务。 8009:…

    Java 2023年5月19日
    00
  • 常见的Java性能分析工具有哪些?

    常见的Java性能分析工具有以下几种: JProfilerJProfiler是一款商业化的Java性能分析工具,功能非常强大,能够进行内存分析、CPU分析、线程分析、I/O分析、代码分析等。使用JProfiler进行性能分析的步骤如下: 下载并安装JProfiler。 打开JProfiler,在“New Session”中选择要进行性能分析的Java应用程序…

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