使用Swing编写win7简易计算器2——输入输出处理
来源:互联网 发布:app源码如何使用教程 编辑:程序博客网 时间:2024/06/06 07:11
编好页面之后,第二天就进入事件处理了。Swing中的事件处理是通过实现ActionListener接口来实现的。因此Calculator的类声明是这样的:
public classCalculator extends JFrame implements ActionListener
继承ActionListener必须实现接口的actionPerformed(ActionEvent e)方法,该方法用于教导计算机如何处理监听器监听的控件点击后的操作。计算器上面的28个按钮的处理全部都在这个类里实现,这样会使得整个方法变得十分臃肿,因此我根据这些按钮的不同,将这些按钮分为四类:
输入输出按钮:这些按钮负责对计算器显示区的数字进行输入输出处理,而不会进行任何运算,这些按钮包括数字键0-9、←、CE、C和.,因为C的作用涉及到对计算器内存的处理,因此将放到后面实现。
单目运算符:这些按钮只需要一个变量即可完成运算,包括√、1/x和±。
双目运算符:这些按钮需要两个变量才可完成运算,包括+、-、*、/和%。
M运算符:计算器提供专门的存储运算,可以将数据先存入计算器的存储器中,以后调用存储器的数据便可进行运算。这些符号就是第一排的MC、MR、MS、M+和M-。
除此之外还有=号,这个符号与多种运算符的计算有关,但与双目运算符的联系较为紧密,我将它也归入双目运算符一并处理了。
接下来的四天我就分别对四种不同类型的按钮进行处理了。今天先进行的是输入输出按钮的处理。
先说一下各按钮的功能:
1. 数字键0-9:当显示区显示的数不是0时,则将点击按钮上的数字加到显示区后面。如果显示区显示的是运算结果时,则无论点哪个数字键都会重新显示该数字。
2. .号:显示小数点,如果显示区已有小数点,则点击不会有反应。
3. CE:将显示区清零。与C的区别是该按钮不会将存储区清空。
4. ←:退格,将显示区显示的数的最右边数字删去,如果为0则不作动作。另外,如果显示区显示的是计算结果,则2和4都不会有响应。
这13个按钮实现起来并不困难。考虑到按钮众多,而每个按钮的业务逻辑比较简单,我在Button类中新添加了NumAction(String text, int index)方法,代码如下:
publicstatic String numberAction(String text, int index) {
if (Operation.isResult)
return Operation.refresh(text, index);
switch (index) {
case Button.BACKSPACE:
return text.length() == 1 ?"0" : text.substring(0,
text.length() - 1);
case Button.C:
return "0";
case Button.ONE:
return "0".equals(text) ?"1" : text + "1";
case Button.TWO:
return "0".equals(text) ?"2" : text + "2";
case Button.THREE:
return "0".equals(text) ?"3" : text + "3";
case Button.FOUR:
return "0".equals(text) ?"4" : text + "4";
case Button.FIVE:
return "0".equals(text) ?"5" : text + "5";
case Button.SIX:
return "0".equals(text) ?"6" : text + "6";
case Button.SEVEN:
return "0".equals(text) ?"7" : text + "7";
case Button.EIGHT:
return "0".equals(text) ?"8" : text + "8";
case Button.NINE:
return "0".equals(text) ?"9" : text + "9";
case Button.ZERO:
return "0".equals(text) ?"0" : text + "0";
case Button.DOT:
return text.contains(".") ?text : text + ".";
default:
return "";
}
}
这一段代码显示,如果是输入输出按钮则函数返回显示区域应输出的内容,如果不是按的这些按钮,则输出空字符串
而在Calculator的actionPerformed(ActionEvent e)中,使用e.getResource()可以获取按钮的对象,例如按下9的按钮,则会返回按钮9的JButton对象,然后使用JTextField的getText()方法和setText()方法可以获取和设置显示区的文本。核心代码如下:
String text = bts.jt.getText();
String temp;
int index;
//获取按钮的对象
for (index = 0; index <bts.jbtn.length; index++) {
if (e.getSource() == bts.jbtn[index])
break;
}
temp = Number.numberAction(text, index);
if (!"".equals(temp)) {
text = temp;
}
}
bts.jt.setText(text);
测试通过,于是输入输出部分就此完成。
- 使用Swing编写win7简易计算器2——输入输出处理
- 使用Swing编写win7简易计算器7——菜单2
- 使用Swing编写win7简易计算器1——页面编程
- 使用Swing编写win7简易计算器3——单目运算符
- 使用Swing编写win7简易计算器4——双目运算符
- 使用Swing编写win7简易计算器5——M运算符
- 使用Swing编写win7简易计算器6——菜单1
- 正则的使用——编写一个简易的计算器
- java 简易计算器Swing
- 使用java语言编写简易计算器
- Swing——计算器
- Swing实现的简易计算器
- Swing实现的简易计算器
- Java—简易计算器
- JAVA编写简易计算器
- c#编写简易计算器
- 简易计算器的编写
- JavaScript编写简易计算器
- WebSphere 取消全局安全性!
- 几何网络5
- 用Java使内存中的Session释放相关
- SQL 优化原则
- 去360还是留百度?一个前baiduer现360er写的
- 使用Swing编写win7简易计算器2——输入输出处理
- 如何在PB中通过读取硬盘序列号实现软件加密
- F7增加值改变事件
- GridView添加横向滚动条
- sql 生成随机码
- KSQL中Update多表级联更新的语法
- Eclipse配置SVN
- 如何在后台代码中执行原生sql?
- java中上传文件后设置文件只读、隐藏