java实现图形化界面计算器

下面为您详细讲解“Java实现图形化界面计算器”的完整攻略。

1. 准备工作

在开始之前,需要确保您已经正确安装了Java开发环境(JDK),以及Java集成开发工具(IDE),如Eclipse或IntelliJ IDEA。

2. 创建界面

使用Java Swing工具包,可以很容易地创建图形化用户界面。您可以通过创建一个JFrame实例作为主窗口,然后添加其他的Swing组件,如文本框、按钮、标签等来实现计算器的图形化界面。

参考以下示例代码,创建一个简单的计算器界面:

import java.awt.*;
import javax.swing.*;

public class Calculator {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Calculator");

        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints constraints = new GridBagConstraints();

        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.gridwidth = 4;
        JTextField textField = new JTextField(15);
        panel.add(textField, constraints);

        constraints.gridwidth = 1;
        constraints.gridy = 1;
        addButton(panel, constraints, "7");
        addButton(panel, constraints, "8");
        addButton(panel, constraints, "9");
        addButton(panel, constraints, "/");

        constraints.gridy = 2;
        addButton(panel, constraints, "4");
        addButton(panel, constraints, "5");
        addButton(panel, constraints, "6");
        addButton(panel, constraints, "*");

        constraints.gridy = 3;
        addButton(panel, constraints, "1");
        addButton(panel, constraints, "2");
        addButton(panel, constraints, "3");
        addButton(panel, constraints, "-");

        constraints.gridy = 4;
        addButton(panel, constraints, "0");
        addButton(panel, constraints, ".");
        addButton(panel, constraints, "=");
        addButton(panel, constraints, "+");

        frame.getContentPane().add(panel, BorderLayout.CENTER);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private static void addButton(Container parent, GridBagConstraints constraints, String text) {
        JButton button = new JButton(text);
        constraints.gridx++;
        parent.add(button, constraints);
    }
}

3. 实现计算逻辑

计算器主要的功能是计算数字并显示结果。因此,我们需要为每个按钮添加适当的操作,以便我们可以进行数字运算。

在添加按钮之后,我们还需要定义一个ActionListener接口的实现类来以响应按钮的点击事件。

参考以下示例代码,实现加减乘除和等于操作的计算逻辑:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator implements ActionListener {
    private static JTextField textField;

    private static double num1 = 0;
    private static double num2 = 0;
    private static String operator = "";

    public static void main(String[] args) {
        JFrame frame = new JFrame("Calculator");

        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints constraints = new GridBagConstraints();

        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.gridwidth = 4;
        textField = new JTextField(15);
        panel.add(textField, constraints);

        constraints.gridwidth = 1;
        constraints.gridy = 1;
        addButton(panel, constraints, "7");
        addButton(panel, constraints, "8");
        addButton(panel, constraints, "9");
        addButton(panel, constraints, "/");

        constraints.gridy = 2;
        addButton(panel, constraints, "4");
        addButton(panel, constraints, "5");
        addButton(panel, constraints, "6");
        addButton(panel, constraints, "*");

        constraints.gridy = 3;
        addButton(panel, constraints, "1");
        addButton(panel, constraints, "2");
        addButton(panel, constraints, "3");
        addButton(panel, constraints, "-");

        constraints.gridy = 4;
        addButton(panel, constraints, "0");
        addButton(panel, constraints, ".");
        addButton(panel, constraints, "=");
        addButton(panel, constraints, "+");

        frame.getContentPane().add(panel, BorderLayout.CENTER);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        String command = event.getActionCommand();
        if (command.matches("[0-9]")) {
            textField.setText(textField.getText() + command);
        } else if (command.equals(".")) {
            if (!textField.getText().contains(".")) {
                textField.setText(textField.getText() + ".");
            }
        } else if (command.equals("+")) {
            num1 = Double.parseDouble(textField.getText());
            operator = "+";
            textField.setText("");
        } else if (command.equals("-")) {
            num1 = Double.parseDouble(textField.getText());
            operator = "-";
            textField.setText("");
        } else if (command.equals("*")) {
            num1 = Double.parseDouble(textField.getText());
            operator = "*";
            textField.setText("");
        } else if (command.equals("/")) {
            num1 = Double.parseDouble(textField.getText());
            operator = "/";
            textField.setText("");
        } else if (command.equals("=")) {
            num2 = Double.parseDouble(textField.getText());
            double result = 0;
            if (operator.equals("+")) {
                result = num1 + num2;
            } else if (operator.equals("-")) {
                result = num1 - num2;
            } else if (operator.equals("*")) {
                result = num1 * num2;
            } else if (operator.equals("/")) {
                result = num1 / num2;
            }
            textField.setText(Double.toString(result));
        }
    }

    private static void addButton(Container parent, GridBagConstraints constraints, String text) {
        JButton button = new JButton(text);
        button.addActionListener(new Calculator());
        constraints.gridx++;
        parent.add(button, constraints);
    }
}

示例说明

示例一

如果要计算1 + 2,我们需要做如下步骤:

  1. 在计算器上按下“1”按钮;
  2. 在计算器上按下“+”按钮;
  3. 在计算器上按下“2”按钮;
  4. 在计算器上按下“=”按钮;
  5. 计算器将显示结果“3”。

在这个示例中,我们演示了如何使用计算器进行加法运算。

示例二

现在我们想计算10 / 5。我们可以执行以下操作:

  1. 在计算器上按下“1”按钮;
  2. 在计算器上按下“0”按钮;
  3. 在计算器上按下“/”按钮;
  4. 在计算器上按下“5”按钮;
  5. 在计算器上按下“=”按钮;
  6. 计算器将显示结果“2.0”。

在这个示例中,我们演示了如何使用计算器进行除法运算。由于我们使用了浮点数来表示结果,因此我们的结果将显示为“2.0”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现图形化界面计算器 - Python技术站

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

相关文章

  • Spring Boot数据库链接池配置方法

    下面是“Spring Boot数据库连接池配置方法”的完整攻略。 什么是数据库连接池? 数据库连接池就是一个管理和维护数据库连接(Connection)的缓存池,应用程序可以从连接池中取出一个连接来进行数据库操作,使用完毕后再将其放回连接池中等待下一个请求。 常用的数据库连接池有HikariCP, Apache DBCP, 还有 C3P0等。而在Spring…

    Java 2023年6月16日
    00
  • springboot项目如何设置session的过期时间

    下面我将详细讲解Spring Boot项目如何设置Session的过期时间。 Spring Boot框架内置了许多有用的快捷方法和工具,其中包括Session的管理和设置。在Spring Boot中配置Session的过期时间非常简单,只需在配置文件(比如application.properties或application.yml)中添加相应的配置即可,具体…

    Java 2023年5月19日
    00
  • eclipse+jdk安装以及会遇到的问题及解决方法

    Eclipse+jdk安装指南 1. 下载并安装JDK 首先需要在官网上下载JDK安装包, 下载网址为:Oracle官网。根据系统的位数进行选择下载,下载完成之后,打开安装包,按照提示进行安装,安装成功后需配置环境变量。 操作步骤如下: 在系统变量中新建JAVA_HOME,指向JDK的安装路径,例如:JAVA_HOME=C:\Program Files\Ja…

    Java 2023年5月24日
    00
  • 如何基于SpringSecurity的@PreAuthorize实现自定义权限校验方法

    下面是详细攻略。 1. SpringSecurity基本概念 SpringSecurity是基于Spring框架的安全认证和授权模块,可以为我们的应用提供强大的安全管理。在SpringSecurity中,每个用户都有一个唯一的用户名和一个密码,SpringSecurity会在用户登录时对这些信息进行校验,如果校验通过则允许用户进行下一步操作,否则拒绝用户进行…

    Java 2023年5月20日
    00
  • 详解SpringBoot 处理异常的几种常见姿势

    详解SpringBoot处理异常的几种常见姿势 在SpringBoot开发中,异常处理是一个非常重要的环节。合理的异常处理能够提高系统的稳定性和可维护性。本文将介绍几种常见的SpringBoot处理异常的姿势。 1. @ControllerAdvice和@ExceptionHandler @ControllerAdvice是Spring4.0引入的一个注解,…

    Java 2023年5月15日
    00
  • java8 LocalDate LocalDateTime等时间类用法实例分析

    Java8 时间类用法实例分析 Java8中引入了全新的日期和时间API,其中包括了多个专门用于处理日期和时间的类。本文将深入介绍几个常用的时间类及其用法实例。 1. LocalDate LocalDate 表示不带时区的日期,它的常用方法有: now():获取当前日期 getYear():获取当前日期的年份 getMonth():获取当前日期的月份 get…

    Java 2023年5月20日
    00
  • Java截取字符串的几种方法示例

    Java截取字符串的几种方法示例 在Java中,截取字符串的操作是非常常见同时也非常重要的,本文将介绍几种Java截取字符串的方法,以及相应的示例说明。 1. 使用substring()方法 Java中字符串类中提供了substring()方法,以便我们对字符串进行截取操作。substring()方法有两种重载形式: substring(int beginI…

    Java 2023年5月26日
    00
  • JavaWeb实现学生信息管理系统(2)

    “JavaWeb实现学生信息管理系统(2)”是一篇教程文章,旨在介绍如何使用JavaWeb技术实现学生信息管理系统。以下是该教程的完整攻略: 简介 在本教程的第一部分中,我们已经搭建好了项目的框架,包括所需的Java类和JSP页面。在本部分中,我们将添加更多的功能来实现完整的学生信息管理系统,并对代码进行相应的优化。 功能实现 添加学生信息 可以通过一个表单…

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