javagui实现简单计算器

上传人:第*** 文档编号:61572972 上传时间:2018-12-04 格式:PDF 页数:14 大小:371.76KB
返回 下载 相关 举报
javagui实现简单计算器_第1页
第1页 / 共14页
javagui实现简单计算器_第2页
第2页 / 共14页
javagui实现简单计算器_第3页
第3页 / 共14页
javagui实现简单计算器_第4页
第4页 / 共14页
javagui实现简单计算器_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《javagui实现简单计算器》由会员分享,可在线阅读,更多相关《javagui实现简单计算器(14页珍藏版)》请在金锄头文库上搜索。

1、Java 面 向 对 象 编 程面 向 对 象 编 程 实 验 报 告实 验 报 告 题题目:目:数组与图形化界面 专专业:业:计算机科学与技术 班班级:级:1120542 学学号:号:06 姓姓名:名:聂建建 太原工业学院计算机工程系 2014 年年5 月月16 日日 一、实验目的与要求一、实验目的与要求 1、掌握 Java 编程中的数组的应用 2、掌握 Java GUI 编程的应用以及 API 的查阅 3、掌握 Java GUI 窗体容器、布局管理器、基本组件、事件的注册 实验内容实验内容 Java GUI 实现如下图简单计算器实现如下图简单计算器 三、实施步骤三、实施步骤 1.首先创建所

2、需要的变量,组件,组件数组 /* 结果输入框 */ private JTextField result; /* 操作键之前缓存 */ private StringBuilder beforeCache = new StringBuilder(); /* 操作键之后缓存 */ private StringBuilder afterCache = new StringBuilder(); /* 清除键 */ private JButton clean; /* 数字键 */ private JButton numberButs = new JButton10; /* 操作键 */ private M

3、ap operKeyMap = new HashMap(); /* 操作标识 */ private boolean operFlag = false; 2.然后对组件进行初始化,将加减乘除等操作间用map集合以键值对 的形式添加。 /* 初始化组件 */ private void initComp() /* 清除按钮初始化 */ clean = new JButton(“清除“); /* 结果按钮初始化 */ result = new JTextField(10); /* 数字键初始化 */ for (int i = 0; i operButtons = operKeyMap.values()

4、; for (JButton operBut : operButtons) operBut.addMouseListener(new MouseListenerImpl(); operBut.addActionListener(mOperKeyActionListenerImpl); private OperKeyActionListenerImpl mOperKeyActionListenerImpl = new OperKeyActionListenerImpl(this); 6.设置主窗体的点击事件,使得退出按钮生效 / 设置窗口的关闭按钮的监听事件:退出 Override public

5、 void windowClosing(WindowEvent e) System.out.println(“退出了“); System.exit(0); 7.设置相应组件点击后的效果 按钮点击按下之后为红色: public void mousePressed(MouseEvent e) JButton bt = (JButton) e.getSource(); / 设置此组件的前景色 bt.setForeground(Color.RED); 鼠标离开之后为黑色: public void mouseExited(MouseEvent e) JButton bt = (JButton) e.ge

6、tSource(); bt.setForeground(Color.black); 8.清除键具体的监听事件设置 JTextField result = calculator.getResult(); / 获取输入文本 String resultStr = result.getText(); if (!resultStr.equals(“) / 文本内容,重置为空 result.setText(“); / 缓存清空 StringBuilder beforeCache = calculator.getBeroreCache(); StringBuilder afterCache = calcul

7、ator.getAfterCache(); beforeCache.delete(0, beforeCache.length(); afterCache.delete(0, afterCache.length(); calculator.setOperFlag(false); 9.数字键具体的监听时间设置 / 获得当前操作的数字键 JButton button = (JButton) e.getSource(); / 获得数字键对应的输入值 String numberValue = button.getText(); if (!calculator.isOperFlag() calculato

8、r.getBeroreCache().append(numberValue); calculator.getResult().setText( calculator.getBeroreCache().toString(); else calculator.getAfterCache().append(numberValue); calculator.getResult().setText( calculator.getAfterCache().toString(); 10.操作计算键具体的部分监听事件设置(+ - * / =) private CalculatorDemo cal; / 运算结

9、果 int result; / 操作符之前的数字 int a; / 操作符之后的数字 int b; / 操作符标志 int z = 0; public OperKeyActionListenerImpl(CalculatorDemo c) this.cal = c; /* * 如果按下操作键盘, 依据操作键表示的操作类型, 执行相关的计算 计算步骤: 1取得操作键之前的缓存输入 2获取操作键之后的数字键输入 * 3获取相关操作类型,执行计算 */ Override public void actionPerformed(ActionEvent event) / 1取得操作键之前的缓存输入 St

10、ringBuilder before = cal.getBeforeCache(); /* 获取操作键 */ JButton but = (JButton) event.getSource(); / 判断操作符 if (but = cal.getOperKeyMap().get(“jia“) z = 0; else if (but = cal.getOperKeyMap().get(“jian“) z = 1; else if (but = cal.getOperKeyMap().get(“chen“) z = 2; else if (but = cal.getOperKeyMap().get

11、(“chu“) z = 3; / 置空结果显示 cal.getResult().setText(“); cal.setOperFlag(true); / 2获取操作键之后的数字键输入 StringBuilder after = cal.getAfterCache(); if (but = cal.getOperKeyMap().get(“dengyu“) a = Integer.parseInt(before.toString().trim(); b = Integer.parseInt(after.toString().trim(); switch (z) case 0: result =

12、a + b; break; case 1: result = a - b; break; case 2: result = a * b; break; case 3: result = a / b; break; default: break; cal.getResult().setText(“ + result); 四、实验结果四、实验结果 主界面: 5 和 3 分别进行+-*/的操作的结果如下: 五、出现的问题及解决的方法五、出现的问题及解决的方法 刚开始加减乘除无法实现,后来发现是调用对象的问题,每次调用监 听事件都要 new 一个对象,所以每次都执行的是 z=0 的默认值,所以每 次只

13、执行加操作。最后给这些按钮注册同一个监听事件,问题解决了 错误之前的代码如下: Collection operButtons = operKeyMap.values(); for (JButton operBut : operButtons) operBut.addMouseListener(new MouseListenerImpl(); operBut.addActionListener(new OperKeyActionListenerImpl(this); 因为我给每一个按钮都加了一个监听对象 OperKeyActionListenerImpl, 他们的 z 的值都是独立的,所以,最后

14、点等于号的时候,那里的 z 的值一直是 默认值 0,就进去加号那个运算了。应该给所有按钮绑定同一个监听事件才合 理的。 所以修改后的代码如下: Collection operButtons = operKeyMap.values(); for (JButton operBut : operButtons) operBut.addMouseListener(new MouseListenerImpl(); operBut.addActionListener(mOperKeyActionListenerImpl); private OperKeyActionListenerImpl mOperKe

15、yActionListenerImpl = new OperKeyActionListenerImpl( this); 六:源码六:源码 类:类:CalcutorDemo package Caculator; import java.awt.BorderLayout; import java.awt.GridLayout; import java.util.Collection; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JFrame; impor

16、t javax.swing.JPanel; import javax.swing.JTextField; public class CalculatorDemo extends JFrame /* 结果输入框 */ private JTextField result; /* 操作键之前缓存 */ private StringBuilder beforeCache = new StringBuilder(); /* 操作键之后缓存 */ private StringBuilder afterCache = new StringBuilder(); /* 清除键 */ private JButton clean; /* 数字键 */ private JButton numberButs = new JButton10; /* 操作键 */

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号