ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

阿里P8大佬整理!Java交互界面实现计算器开发设计【附函数源码

2021-08-09 15:01:52  阅读:145  来源: 互联网

标签:控件 Java setOutput INumSecond P8 num 点击 源码 INumFirst


该函数的具体实现代码如下:


//定义控件触发时集中处理函数

public static void Numbers_Cliked() {

	//如果点击在运算操作符

	if (OperationCliked) {

		//如果点击了小数点

		if (DotCliked) {

			lastPrecisionNum *=0.1;

			double strDotnum = ControlNum*lastPrecisionNum;

			INumSecond += strDotnum;

		}

		else {

			INumSecond = INumSecond*10 + ControlNum;

		}

		setOutput2 = "";

		setOutput2 +=INumSecond;

		//return setOutput2;

	}

	

	//如果没有点击运算操作符

	else {

		if (DotCliked) {

			lastPrecisionNum *=0.1;

			double strDotnum = ControlNum*lastPrecisionNum;

			INumSecond += strDotnum;

		}

		else {

			INumSecond = INumSecond*10 + ControlNum;

		}

		setOutput = "";

		setOutput +=INumSecond;

		//return setOutput;

	}	

} 

.

操作符点击后数据转换赋值函数

=================================================================================

当我们点击了运算操作符之后,说明我们的第一个数据已经输入完成了,这个时候,我们将要输入的是第二个数据,这时候我们就需要进行数据的赋值转换,因为我们最开始的时候是使用INumsecand这个变量来接收数据的,所以在点击运算操作符之后,我们需要将INumsecand的值赋给INumfirst,并将INumsecand的值赋于0,重新接收第二个数据。

你可能会问,为什么不直接使用INumfirst接收第一个数据,使用INumsecand接收第二个数据,原因是因为,当你点击数字控件时,我们无法判断你输入的数据是第一个数据还是第二个数据,我们只能将你输入的数据统一的赋值给某一个变量,在这里这个变量就是INumsecand,只有我们判断到当点击了运算操作符之后,说明我们的上一个数据已经输入完成了,这时候才需要我们将INumsecand赋值给INumfirst,来说明我们得到了第一个数据。

该函数的实现代码如下:


//定义操作符点击后数据转换赋值的函数

public static void Operation_Cliked() {

	INumFirst = INumSecond;		//将第一次键入的值赋给第一个数

	INumSecond = 0;				//将接收输入数值的变量赋值于0

	DotCliked = false;			//将布尔型小数点变量赋初值为:未点击

	lastPrecisionNum = 1;

} 

.

计算器窗口界面函数

============================================================================

在这两个函数完成之后,就是我们计算器的界面设计函数了,

在该函数中,我们需要对计算器的整体界面进行布局设计,同时还需要对每一个控件添加监控,当我们点击相应的控件的时候,可以触发相应的事件操作。

运算符控件


如我们点击加法按键时,需要将我们第一次输入的数据和加法运算符输出出来,并且调用操作符点击后数据转换赋值的函数,来进行数据的赋值转换。


//设置加法按键+

		JButton add_bt = new JButton("+");

		add_bt.setBounds(5, 110, 80, 40);

		add_bt.setFont(font);

		container.add(add_bt);

		

		//添加单击监控

		add_bt.addActionListener(new ActionListener() {

			

			@Override

			public void actionPerformed(ActionEvent arg0) {

				// TODO Auto-generated method stub

				Operation = "+";

				setOutput += Operation + "\n";

				text.setText(setOutput);	//数值和运算符输出

				OperationCliked = true;

				Operation_Cliked();		//调用操作符点击后数据转换赋值的函数

				

			}

		}); 

数字控件


当我们点击数字0-9时,说明我们正在进行数值的输入,这个时候就需要获取到相应控件上的数值,并且调用控件触发时集中处理函数,将我们键入的数字进行赋值。

以控件数字7为例,在这里我使用num_7.getText()来获取当前所点击控件的文本,其实这是比较笨的一种方法,需要对每一个控件使用该函数,还有一种方法是获取当前焦点所在的控件,并且获取其文本,对这种方法熟悉的小伙伴可以留言大灰狼一起交流。

下面是数字7控件的相应触发代码:


JButton num_7 = new JButton("7");

num_7.setBounds(5, 200, 80, 40);

num_7.setFont(font);

container.add(num_7);

num_7.addActionListener(new ActionListener() {

	

	@Override

	public void actionPerformed(ActionEvent arg0) {

		// TODO Auto-generated method stub

		String strNum = num_7.getText();

		ControlNum = java.lang.Double.parseDouble(strNum);

		Numbers_Cliked();	//调用数值控件触发集中处理函数

		text.setText(setOutput + setOutput2);	//文本框输出

	}

}); 

其他数字控件与其类似。

小数点控件


当我们点击小数点的时候,说明我们输入的数据存在小数位,这个时候我们就需要对其作出相应的操作,如我们在点击运算操作符之前点击的小数点控件,则将小数点显示在文本框的第一行,表示第一个数是一个小数,如果我们是在点击运算操作符之后点击的小数点控件,则需要将小数点显示在文本框的第二行,表示我们输入的第二个数是小数。

具体实现代码如下:


//设置小数点按钮

		JButton num_dot = new JButton(".");

		num_dot.setBounds(175, 335, 80, 40);

		num_dot.setFont(font);

		container.add(num_dot);

		num_dot.addFocusListener(new FocusListener() {

			

			@Override

			public void focusLost(FocusEvent arg0) {

				// TODO Auto-generated method stub

				

			}

			

			@Override

			public void focusGained(FocusEvent arg0) {

				// TODO Auto-generated method stub

				if (OperationCliked) {

					setOutput2 += ".";

					text.setText(setOutput + setOutput2);

					DotCliked = true;

				}

				else {

					setOutput += ".";

					text.setText(setOutput + setOutput2);

					DotCliked = true;

				}

				

			}

		}); 

等号控件


当我们点击等号控件的时候,说明我们的数据和运算符的输入已经完成了,接下来我们就只需要根据我们键入的运算符进行判断,并进行相应的运算即可,同时在得到结果之后,我们还应将之前定义的所有变量赋予初值,方便我们进行下次输入。

实现代码如下:


//设置等号按钮

JButton num_equ = new JButton("=");

num_equ.setBounds(260, 110, 80, 130);

num_equ.setFont(font);

container.add(num_equ);

num_equ.addActionListener(new ActionListener() {

	

	@Override

	public void actionPerformed(ActionEvent arg0) {

		// TODO Auto-generated method stub

		switch (Operation) {

		case "+":

			IResult = INumFirst + INumSecond;

			break;

		case "-":

			IResult = INumFirst - INumSecond;

			break;

		case "*":

			IResult = INumFirst * INumSecond;

			break;

		case "/":

			IResult = INumFirst / INumSecond;

			break;

		case "X2":

			IResult = INumFirst * INumFirst;

			break;

		case "X3":

			IResult = INumFirst * INumFirst * INumFirst;

			break;

		default:

			

			break;

		}

		if (Operation == "X2" )

		{

			setOutput = INumFirst + "*" + INumFirst + "\n";

			String strIResult = java.lang.Double.toString(IResult);

			setOutput2 = strIResult;

			text.setText(setOutput + setOutput2);

		}

		if (Operation == "X3" )

		{

			setOutput = INumFirst + "*" + INumFirst + "*" + INumFirst + "\n";



### 最后

**如果大家需要这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档的话,[可以戳这里即可免费获取!](https://gitee.com/vip204888/java-p7)**

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

![image.png](https://upload-images.jianshu.io/upload_images/24616006-a60d2dca988e7086.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

标签:控件,Java,setOutput,INumSecond,P8,num,点击,源码,INumFirst
来源: https://www.cnblogs.com/dhsfdhfhgufdu/p/15118677.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有