Java实现简单计算器(GUI)页面(适合入门)

这篇具有很好参考价值的文章主要介绍了Java实现简单计算器(GUI)页面(适合入门)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.计算器达到目的

使用Java Swing的GUI图形用户界面编程设计并编写一个简易计算器程序,用户通过鼠标或者键盘操作输入参加运算的数值和运算符,要求能进行简单的四则运算。

2.实现效果如下:

java计算器界面设计,java,java,开发语言文章来源地址https://www.toymoban.com/news/detail-523804.html

 3.实现代码

package cn;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.script.*;
import java.awt.event.*;
import java.math.BigDecimal;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/*创建主类E_calculator*/
public class E_calculator {
	JButton st;	 // st的作用类似于寄存器
	/* 以下i_1至i_5为状态开关 */
	int i_1 = 1;
	int i_2 = 1; 	// 开关2用于记录符号键的次数
	int i_3 = 1; 	// 开关3用于标识 str1 是否可以被清 0
	int i_4 = 1; 	// 开关4用于标识 str2 是否可以被清 0
	int i_5 = 1;	 // 开关5用于控制小数点可否被录入
	String str1 = "0";	 // 操作数1,为了程序的安全,初值设置为0
	String str2 = "0"; 	// 操作数2
	String signal = "+";	 // 运算符
	String result = ""; 	// 运算结果
	Vector vt = new Vector(20, 20);
// 创建一个 JFrame 对象并初始化
	JFrame frame = new JFrame("简易计算器"); 
// JTextField用于显示操作和计算结果的文本框
JTextField TextField = new JTextField(result, 30); 
	JButton clear_Button = new JButton("清 除"); 	// 清除按钮
	/* 数字键0到9 */
	JButton button0 = new JButton("0");
	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 button_jia = new JButton("+");
	JButton button_jian = new JButton("—");
	JButton button_cheng = new JButton("*");
	JButton button_chu = new JButton("/");
	JButton button_dy = new JButton("=");
	JButton button_Dian = new JButton(".");
//创建E_calculator()方法中编写数字键的响应逻辑
	public E_calculator() {
		button0.setMnemonic(KeyEvent.VK_0);
		TextField.setHorizontalAlignment(JTextField.RIGHT);
		JPanel panel = new JPanel();// 创建一个 Jpanel 对象并初始化
// 设置该容器的布局为四行四列,边距为10像素
		panel.setLayout(new GridLayout(4, 4, 10, 10));
		panel.setSize(500, 800);
		panel.setBackground(Color.gray); 	// 设置背景颜色为灰色
		/* 将用于计算的按钮添加到容器内 */
		panel.add(button7);
		panel.add(button8);
		panel.add(button9);
		panel.add(button_cheng);
		panel.add(button4);
		panel.add(button5);
		panel.add(button6);
		panel.add(button_chu);
		panel.add(button1);
		panel.add(button2);
		panel.add(button3);
		panel.add(button_jian);
		panel.add(button0);
		panel.add(button_Dian);
		panel.add(button_dy);
		panel.add(button_jia);
// 设置panel对象的边距为16
		panel.setBorder(BorderFactory.createEmptyBorder(16, 16, 16, 16));						JPanel panel2 = new JPanel();	// 按照同样的方式设置第二个JPanel
		panel2.add(TextField, BorderLayout.WEST);
		panel2.add(clear_Button, BorderLayout.EAST);
		frame.setLocation(400, 200);		// 设置主窗口出现在屏幕上的位置
		frame.setResizable(true);		// 设置窗体可以调大小
		frame.getContentPane().setLayout(new BorderLayout());
		// 窗体中可以放置 JPanel,这里我们将面板panel和面板panel2让如窗体
		frame.getContentPane().add(panel2, BorderLayout.NORTH);
		frame.getContentPane().add(panel, BorderLayout.CENTER);
		frame.pack();
		frame.setVisible(true);

		/* Listener类中编写的是数字键的响应逻辑*/
		class Listener implements ActionListener {
			public void actionPerformed(ActionEvent test) {
				String ss = ((JButton) test.getSource()).getText();
				st = (JButton) test.getSource();
				vt.add(st);
				if (i_1 == 1) {
					if (i_3 == 1) {
						str1 = "";
						i_5 = 1;
					}
					str1 = str1 + ss;
					i_3 = i_3 + 1;
					TextField.setText(str1);
				} else if (i_1 == 2) {
					if (i_4 == 1) {
						str2 = "";
						i_5 = 1;
					}
					str2 = str2 + ss;
					i_4 = i_4 + 1;
					TextField.setText(str2);
				}
			}
		}

		/* Listener_signal类中编写了运算符号键的响应逻辑 */
		class Listener_signal implements ActionListener {
			public void actionPerformed(ActionEvent e) {
				String ss2 = ((JButton) e.getSource()).getText();
				st = (JButton) e.getSource();
				vt.add(st);
				if (i_2 == 1) {
					i_1 = 2;
					i_5 = 1;
					signal = ss2;
					i_2 = i_2 + 1;
				} else {
					int a = vt.size();
					JButton c = (JButton) vt.get(a - 2);
					if (!(c.getText().equals("+")) && !(c.getText().equals("—")) 						&& !(c.getText().equals("*"))&& !(c.getText().equals("/"))) {
						cal();
						str1 = result;
						i_1 = 2;
						i_5 = 1;
						i_4 = 1;
						signal = ss2;
					}
					i_2 = i_2 + 1;
				}
			}
		}

		/*Listener_clear类中编写了清除键的响应逻辑*/
		class Listener_clear implements ActionListener {
			public void actionPerformed(ActionEvent test) {
				st = (JButton) test.getSource();
				vt.add(st);
				i_5 = 1;
				i_2 = 1;
				i_1 = 1;
				i_3 = 1;
				i_4 = 1;
				str1 = "0";
				str2 = "0";
				signal = "";
				result = "";
				TextField.setText(result);
				vt.clear();
			}
		}

		/*Listener_dy类中编写的是等于号键的响应逻辑*/
		class Listener_dy implements ActionListener {
			public void actionPerformed(ActionEvent e) {
				st = (JButton) e.getSource();
				vt.add(st);
				cal();
				i_1 = 1;
				i_2 = 1;
				i_3 = 1;
				i_4 = 1;
				str1 = result;
			}
		}

		/*Listener_xiaos类中编写的是小数点键的相应逻辑*/
		class Listener_xiaos implements ActionListener {
			public void actionPerformed(ActionEvent e) {
				st = (JButton) e.getSource();
				vt.add(st);
				if (i_5 == 1) {
					String ss2 = ((JButton) e.getSource()).getText();
					if (i_1 == 1) {
						if (i_3 == 1) {
							str1 = "";
							i_5 = 1;
						}
						str1 = str1 + ss2;
						i_3 = i_3 + 1;
						TextField.setText(str1);
					} else if (i_1 == 2) {
						if (i_4 == 1) {
							str2 = "";
							i_5 = 1;
						}
						str2 = str2 + ss2;
						i_4 = i_4 + 1;
						TextField.setText(str2);
					}
				}
				i_5 = i_5 + 1;
			}
		}
		// 监听等于键
		Listener_dy jt_dy = new Listener_dy();
		// 监听数字键
		Listener jt = new Listener();
		// 监听符号键
		Listener_signal jt_signal = new Listener_signal();
		// 监听清除键
		Listener_clear jt_c = new Listener_clear();
		// 监听小数点键
		Listener_xiaos jt_xs = new Listener_xiaos();
		button7.addActionListener(jt);
		button8.addActionListener(jt);
		button9.addActionListener(jt);
		button_chu.addActionListener(jt_signal);
		button4.addActionListener(jt);
		button5.addActionListener(jt);
		button6.addActionListener(jt);
		button_cheng.addActionListener(jt_signal);
		button1.addActionListener(jt);
		button2.addActionListener(jt);
		button3.addActionListener(jt);
		button_jian.addActionListener(jt_signal);
		button0.addActionListener(jt);
		button_Dian.addActionListener(jt_xs);
		button_dy.addActionListener(jt_dy);
		button_jia.addActionListener(jt_signal);
		clear_Button.addActionListener(jt_c);
		// 窗体关闭事件的响应程序
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
	// cal()方法中编写了计算逻辑的实现。
	public void cal() {
		double a2,b2;	//定义两个变量a2,b2
		String c = signal;
		double result2 = 0;		//初始化
		if (c.equals("")) {
			TextField.setText("Please input operator");
		} else {
			if (str1.equals("."))
				str1 = "0.0";
			if (str2.equals("."))
				str2 = "0.0";
			a2 = Double.valueOf(str1).doubleValue();
			b2 = Double.valueOf(str2).doubleValue();
			if (c.equals("+")) {
				result2 = a2 + b2;
			}
			if (c.equals("—")) {
				result2 = a2 - b2;
			}
			if (c.equals("*")) {
				BigDecimal m1 = new BigDecimal(Double.toString(a2));
				BigDecimal m2 = new BigDecimal(Double.toString(b2));
   				 //乘法运算,只需导入组件(import  java.math.BigDecimal)
				result2 = m1.multiply(m2).doubleValue();	
			}
			if (c.equals("/")) {
				if (b2 == 0) {
					result2 = 0;
				} else {
					result2 = a2 / b2;
				}
			}
			result = ((new Double(result2)).toString());
			TextField.setText(result);
		}
	}
	public static void main(String[] args) {
		E_calculator CT = new E_calculator();
	}
}

到了这里,关于Java实现简单计算器(GUI)页面(适合入门)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Java制作简单的计算器

    本篇文章主要是提供思路,当然文章末尾也又提供了源代码。 代码也是写了几天,重要的理解,不是直接复制粘贴就交作业了。 转载请注明出处,尊重作者劳动成果。 目录 界面的设计: 事件的响应: 计算: 详细代码如下:  总结: 要制作一个简单的计算器,首先就是对

    2024年02月08日
    浏览(33)
  • Java——一个简单的计算器程序

      该代码是一个简单的计算器程序,使用了Java的图形化界面库Swing。具体分析如下: 导入必要的类和包: 代码中导入了用于创建图形界面的类和接口,以及其他必要的类。 定义Calculator类: 代码中定义了一个名为Calculator的类,继承了JFrame类,并实现了ActionListener接口。Calc

    2024年02月04日
    浏览(34)
  • Java设计一个简单的计算器程序

    计算器是一种常见的工具,用于进行基本数学运算。在计算机科学中,我们可以使用编程语言来模拟和实现一个计算器程序。本文将基于Java语言,设计并实现一个简单的计算器程序。 1. 需求分析 在设计计算器程序之前,我们需要明确程序的需求。本文设计的计算器程序应满

    2024年02月05日
    浏览(43)
  • Qt实现简单计算器

    三级项目想用Qt做界面。 为了熟悉一下Qt操作,历时8h做了个计算器。 没用到数据库,布的控件也比较简单。 所以calculator.pro和widget.ui就不放了(太长了占地方) 文件压缩包放在下一篇了,需要自取。 自学时间较短,有很多不足欢迎指正。 ⭐:del按键上的图片用的是绝对路

    2024年02月11日
    浏览(36)
  • 用代码实现一个简单计算器

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《C语言》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将C语言基础知识一网打尽,希望可

    2024年02月08日
    浏览(29)
  • 模拟实现一个简单的计算器

    2024年02月11日
    浏览(39)
  • 【Python】简单计算器实现(四)

    解决思路: 最后,我们来看看最简单的运算函数和判断运算符函数。 定义函数: def calculate(n1, n2, operator) param n1: float param n2: float param operator: + - * / return: float 定义函数: def is_operator(e) param e: str return: bool 最后的调用 这里定义了两个变量 result 和 _ 来接收 final_calc 返回的两个

    2024年02月16日
    浏览(28)
  • QT实现简单计算器(附源码)

    作为qt初学者,自己做一个简单计算器是比较普遍的练习题,使用widget方式实现一个简单的计算器功能。 使用Push Button组件将ui界面布局 显示界面使用Line Edit组件 将各个组件槽函数关联 等于符号的槽函数(进行加减乘除运算) 成功调试

    2024年02月12日
    浏览(29)
  • 【设计模式项目】【GUI计算器】

    由于Java 课程设计已经完成前期的计算器GUI设计,以及功能实现,现在基于之前的基础,进行设计模式的应用,以完善软件设计。 如果还不了解之前GUI设计的童鞋,可以先查看【Java课程设计】【图形界面程序】【计算器】。 使用了以下设计模式: 工厂模式: 工厂模式被用于

    2024年02月11日
    浏览(26)
  • Java中规模软件开发实训——简单计算器制作

    ✨ 博主: 命运之光 🌸 专栏: Python星辰秘典 🐳 专栏: web开发(html css js) ❤️ 专栏: Java经典程序设计 ☀️ 博主的其他文章: 点击进入博主的主页 前言: 在现代社会中,计算器是我们生活中不可或缺的工具之一。它们可以轻松地进行各种数值计算,从简单的加减乘除

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包