时间:2024-09-03
张文哲 王璐 崔洪宇
在MyEclipse 8.6 运行环境下,应用图形用户界面采用JAVA程序设计语言,实现简单的计算器功能。本文利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
1.界面设计
新建类caculator_1继承JFrame并设置其位置大小关闭方式等即出现以上窗体。在整体布局中添加JPanel,采用网格布局添加20个JButton,分别代表不同的数字以及功能,还要添加一个现实输入信息的文本框,用来显示输入的信息与最后结果。将文本框放在布局最上面,将20个JButton按一列5个按钮显示在布局中,使20个按钮顺序排列在布局上。计算器的整体界面如图1所示。
图1 可视化计算器界面
2.具体功能设计
(1)实现加、减、乘、除四则基本运算
在输入加减乘除运算符之前,要先判断一下是否已经输入操作数,若输入了,要先记录前面输入的操作数,然后再进行运算,否则默认第一个操作数是零。用符号区分各种运算,来进行不同种类的运算。
(2)能够实现求倒数、开方、取反运算
在进行这几个运算中只需要一个操作数,所以输入一个操作数之后,点击对应运算的按钮,进行运算操作。
(3)按键“C”能够实现清除文本框中的信息功能。
“CE”按钮能够实现撤销文本框的信息功能。
3.关键代码
(1)实现四则运算的关键代码
if (operator.equals("+")){resultNum += getNumberFromText();}
else if (operator.equals("-")){resultNum -= getNumber FromText();}
else if (operator.equals("*")){resultNum *= getNumber FromText();}
private void handleOperator(String key) {if (operator.equals("/");}
if (getNumberFromText() == .0){operateValidFlag = false;resultText.setText(“除数不能为零”);}
else {resultNum /= etNumberFromText();}
(2)实现开根号、倒数、定义相反数等运算的关键代码
// 开根号运
if (temp == btn_Sqrt) { String s = txt.getText(); if (s.charAt(0) == '-') {JOptionPane.showMessageDialog(null, "负数不能开根号");} // 判断符号是否符合运算规则
else {txt.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(txt.getText()))));}
// 倒数运算
if (temp == btn_Dao) {if (txt.getText().charAt(0) == '0' && txt.getText().length() == 1) {// 判断此数是否符合进行倒数运算规则JOptionPane.showMessageDialog(null, "零不能求倒数");} else { boolean isDec = true;int i, j, k;String s = Double.toString(1 / Double(txt.getText()));
for (i = 0; i < s.length(); i++) { if (s.charAt(i) == '.') { break;}} for (j = i + 1; j < s.length(); j++) {if (s.charAt(j) != '0') { isDec = false; break;} } if (isDec == true) {String stemp = "";
for (k = 0; k < i; k++) { stemp += s.charAt(k); }xt.setText(stemp); } else {txt.setText(s);} }}
// 定义相反数按钮
jButton16 = new JButton("+/-");
0-Double.parseDouble(jTextField.getText().trim()); Button16.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { double i2=0-Double.parseDouble(jTextField.getText().trim());jTextField.setText(Double.toString(i2));}}); 通过使用文本框中的数据变成其相反数
(3)实现“C”键、定义进制转换的关键代码
// 按下C按钮,文本框内数据清除,同时middle,result清0
if (temp == btn_C) {
middle = result = 0;
txt.setText(“”);
}
//定义进制转换按钮,jButton31、jButton34、jButton37、jButton40分别为十六进制、十进制、八进制、二进制,通過调用Integer.toHexString(n)十六进制、Integer.toOctalString(n)八进制、Integer.toBinaryString(n)二进制来实现进制之间的相互转换。
4.结果与分析
1)计算6.8+7.5=14.3
本实例需要用户通过按钮输入运算表达式,由界面提供数字和符号的按钮,同时还能够显示输入和输出结果,当进行按下‘=键时,进行表达式的求值。
先输入5.6,按加号键,再输入6.7,按等于号,得出最后结果。
2)取对数运算
按下ln按钮,其方法是调用Math.log1p(i),当对数值i大于0时就调用Math.ln(i)来输出结果,当i小于0时就在文本框中显示负数不能求对数!5.结论
3)三角函数运算
三角函数sin、cos、tan在使用时需要先调用弧度按钮,将相应的角度转换成弧度以后在使用三角函数对应的按钮才可以实现求三角函数的值。求弧度方法在定义弧度按钮时实现,string.valueOf(i/180*Math.PI)求对应的弧度sin、cos、tan使用math中的方法。
5.结论
本设计是一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:加、减、乘、除等基本运算,科学计算器的基本功能有:三角函数、进制转换、开方运算、倒数运算等等,本计算器还可以支持键盘录入功能,总的来说此计算器在设计上,优雅美观,功能全面,错误漏洞少。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!