21xrx.com
2024-09-17 03:51:32 Tuesday
登录
文章检索 我的文章 写文章
Java实现简易计算器:从界面设计到代码实现
2023-06-15 16:17:16 深夜i     --     --
Java 简易计算器 Swing JButton 动作监听器 数据类型 完整代码案例 可压缩下载

    return c == '+' || c == '-' || c == '*' || c == '/';

Java作为一门强类型语言,在编写计算器程序时体现了其强大的计算和运算能力。本文将为大家介绍如何在Java中设计并实现一个简单的计算器,同时提供可压缩下载的完整代码案例。

一、界面设计

Java的Swing组件提供了丰富多样的界面设计工具,我们可以借助这些组件设计出美观、简洁的计算器界面。下面是一个简单的示例:

![](https://cdn.nlark.com/yuque/0/2021/png/22261788/1626881023959-b4082b4e-9c7b-4845-989c-d40560eec727.png)

在这个界面中,我们使用了多个JButton按钮,通过代码实现对这些按钮的响应操作,实现计算器功能。

二、代码实现

对于计算器程序,需要实现各种基本的数学运算,例如加、减、乘、除等。下面是Java代码实现简单计算器的功能:


package calculator;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Calculator extends JFrame implements ActionListener {

  private static final long serialVersionUID = 1L;

  private Container container;

  private JPanel panel;

  private JTextField result;

  private Icon[] icon = new ImageIcon[16];

  private JButton[] button = new JButton[16];

  private String[] name = {"1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "*", ".", "0", "=", "/"};

  private String[] func = "num";

  public Calculator() {

    super("Calculator");

    this.initIcon();

    this.initComponent();

    this.addActionListen();

    this.setVisible(true);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.setSize(228, 270);

    this.setResizable(false);

  }

  private void initIcon() {

    for (int i = 0; i < 16; i++) {

      icon[i] = new ImageIcon("lib//" + i + ".png");

    }

  }

  private void initComponent() {

    container = this.getContentPane();

    panel = new JPanel(new GridLayout(4, 4, 3, 3));

    result = new JTextField("");

    result.setHorizontalAlignment(JTextField.RIGHT);

    for (int i = 0; i < 16; i++) {

      button[i] = new JButton(name[i], icon[i]);

      button[i].setActionCommand(func[i]);

    }

    for (int i = 0; i < 16; i++) {

      panel.add(button[i]);

    }

    container.add(result, BorderLayout.NORTH);

    container.add(panel, BorderLayout.CENTER);

  }

  private void addActionListen() {

    for (int i = 0; i < 16; i++)

      button[i].addActionListener(this);

  }

  private boolean isOperator(char c) {

    return c == '+' || c == '-' || c == '*' || c == '/';

  }

  @Override

  public void actionPerformed(ActionEvent e) {

    String cmd = e.getActionCommand();

    if (cmd.equals("num")) {

      result.setText(result.getText() + e.getSource());

    } else if (cmd.equals("oper")) {

      result.setText(result.getText() + e.getSource());

    } else if (cmd.equals("equ")) {

      String text = result.getText();

      if (text.equals("") || text == null)

        return;

      

      String s1 = "", s2 = "";

      char flag = ' ';

      for (int i = 0; i < text.length(); i++) {

        char c = text.charAt(i);

        if (isOperator(c)) {

          flag = c;

          s1 = text.substring(0, i);

          s2 = text.substring(i + 1);

        }

      }

      double d1 = Double.parseDouble(s1);

      double d2 = Double.parseDouble(s2);

      double resultValue = 0;

      if (flag == '+') {

        resultValue = d1 + d2;

      } else if (flag == '-')

        resultValue = d1 - d2;

       else if (flag == '*') {

        resultValue = d1 * d2;

      } else if (flag == '/') {

        if (d2 != 0)

          resultValue = d1 / d2;

         else {

          result.setText("");

          return;

        }

      }

      result.setText(resultValue + "");

    }

  }

  public static void main(String[] args) {

    new Calculator();

  }

}

本例是一个继承自JFrame的类Calculator,通过继承JFrame类,我们打造了一个完整的窗口,并实现了计算器的基本功能。其中,我们通过使用多个JButton按钮和动作监听器实现了计算器按钮的响应操作,通过使用String、Char等数据类型实现了计算器的基础计算功能。 在addActionListen方法中,我们实现了JButton按钮的监视器的注册监听,为每个按钮添加了监听器。在actionPerformed方法中,我们对每个监听器的按钮被按下后进行全部处理,这里主要是实现按钮的意义判断与计算。

三、代码案例下载

如果你想下载本文中所示的Java简易计算器的完整代码,可以访问:https://github.com/alexlin1024/calculator。下载完整代码后,你可以进行源代码或可执行程序的测试、编译和修改。

四、关键词

Java、简易计算器、Swing、JButton、动作监听器、数据类型、完整代码案例、可压缩下载。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章