




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA简易计算器系统流程Main() disp()actionPerformed(ActionEvent e)setSum()windowClosing(WindowEvent e)该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能.实现代码import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Label;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.SwingConstants;public class Calculator extends WindowAdapter implements ActionListener JFrame frame;JTextField show;JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh,zf;/ 按钮 退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号JButton b = new JButton10; / 按钮数组,数字键09double sum = 0, getValue;int i = 0, j = 0, p = 0, l, action;JDialog about;final int slength = 30; / 设置结果显示有效长度public void disp() frame = new JFrame();frame.setTitle(bbb的个人计算器);frame.setSize(360, 230);frame.setLocation(380, 260);frame.setBackground(Color.LIGHT_GRAY);frame.setLayout(new FlowLayout(FlowLayout.CENTER);frame.setResizable(false);/计算器disTop模块,包括数字显示文本框、back,ce,c,about按钮show = new JTextField(31);show.setText(0);show.setHorizontalAlignment(SwingConstants.RIGHT);show.setEditable(false);frame.add(show);Panel dispTop = new Panel();frame.add(dispTop);dispTop.setLayout(new GridLayout(1, 4, 3, 3);bc = new JButton( Back );bc.setForeground(Color.BLUE);dispTop.add(bc);ce = new JButton( CE );ce.setForeground(Color.BLUE);dispTop.add(ce);c = new JButton( C );c.setForeground(Color.BLUE);dispTop.add(c);/广告按钮,显示计算器制作者ab = new JButton( About );ab.setForeground(Color.BLUE);dispTop.add(ab);about = new JDialog(frame, 关于计算器, true);Label ct = new Label(本 计 算 器 由 bbb 制 作, 1);ct.setForeground(Color.RED);about.add(ct, Center);about.setSize(200, 100);about.setLocation(500, 300);/主要按钮显示面板包括disLeft和disRightPanel dispMain = new Panel();frame.add(dispMain);dispMain.setLayout(new GridLayout(1, 2, 10, 10);/disLeft面板,包括0-9、+/-、。这十二个按钮Panel dispLeft = new Panel();dispMain.add(dispLeft);dispLeft.setLayout(new GridLayout(4, 3, 3, 3);Panel dispRight = new Panel();/disRight面板,包括+、-、*、/、sqrt、%、1/x、=这个人几个按钮 dispMain.add(dispRight);dispRight.setLayout(new GridLayout(4, 2, 3, 3);/新建0-9这是个按钮,并将其添加到disLeft中for (l = 9; l = 0; l-) bl = new JButton(String.valueOf(l);dispLeft.add(bl);bl.addActionListener(this);/新建其余按钮,并分别将其添加到各自的面板中jia = new JButton(+);jia.setForeground(Color.RED);jian = new JButton(-);jian.setForeground(Color.RED);cheng = new JButton(*);cheng.setForeground(Color.RED);chu = new JButton(/);chu.setForeground(Color.RED);equ = new JButton(=);equ.setForeground(Color.RED);point = new JButton(.);zf = new JButton( +/- );sqrt = new JButton(sqrt);bfh = new JButton(%);ds = new JButton(1/x);dispRight.add(chu);dispRight.add(sqrt);dispRight.add(cheng);dispRight.add(bfh);dispRight.add(jian);dispRight.add(ds);dispRight.add(jia);dispRight.add(equ);dispLeft.add(zf);dispLeft.add(point);/为各个按钮绑定 监听器about.addWindowListener(this);bc.addActionListener(this);ce.addActionListener(this);c.addActionListener(this);ab.addActionListener(this);jia.addActionListener(this);jian.addActionListener(this);cheng.addActionListener(this);chu.addActionListener(this);equ.addActionListener(this);point.addActionListener(this);zf.addActionListener(this);sqrt.addActionListener(this);bfh.addActionListener(this);ds.addActionListener(this);frame.addWindowListener(this);frame.setVisible(true);public void actionPerformed(ActionEvent e) getValue = Double.valueOf(show.getText().doubleValue();if (e.getSource() = jia) / 加运算,可连加if (j = 0) sum = getValue; else if (action = 1) sum += getValue;setSum();j+;p = 0;i = 0;action = 1; else if (e.getSource() = jian) / 减运算,可连减if (j = 0) sum = getValue; else if (action = 2) sum -= getValue;setSum();j+;p = 0;i = 0;action = 2; else if (e.getSource() = cheng) / 乘运算,可连乘if (j = 0) sum = getValue; else if (action = 3) sum *= getValue;setSum();j+;p = 0;i = 0;action = 3; else if (e.getSource() = chu) / 除运算,可连除if (j = 0)sum = getValue;else if (action = 4) sum /= getValue;setSum();j+;p = 0;i = 0;action = 4; else if (e.getSource() = equ) / 等号,运算最后一个操作数switch (action) case 1:show.setText(String.valueOf(sum += getValue);break;case 2:show.setText(String.valueOf(sum -= getValue);break;case 3:show.setText(String.valueOf(sum *= getValue);break;case 4:show.setText(String.valueOf(sum /= getValue);break;setSum();i = 0;j = 0;action = 0; else if (e.getSource() = point) / 小数点,只能按一个小数点if (p = 0)show.setText(show.getText() + e.getActionCommand();p = 1; else if (e.getSource() = c | e.getSource() = ce) / 清空与复位i = 0;j = 0;p = 0;sum = 0;action = 0;show.setText(0); else if (e.getSource() = bc) / 退格String s = show.getText();if (s.length() 1) show.setText();for (l = 0; l s.length() - 1; l+) / 按一下,删除尾部一位char a = s.charAt(l);show.setText(show.getText() + a); elseshow.setText(0); else if (e.getSource() = ab) / 关于about.setVisible(true); else if (e.getSource() = sqrt) / 开2次方根sum = Math.sqrt(getValue);setSum();i = 0; else if (e.getSource() = ds) / 求倒数sum = 1 / getValue;setSum();i = 0; else if (e.getSource() = bfh) / 百分号sum = getValue / 100;setSum();i = 0; else if (e.getSource() = zf) / 正负号切换,正号不显示String s = show.getText();char a = s.charAt(0);if (a = -) show.setText();for (l = 1; l s.length(); l+) / 去掉负号show.setText(show.getText() + s.charAt(l); else if (getValue != 0) / 加上负号show.setText(- + s);for (l = 0; l 10; l+) / 09数字键触发if (e.getSource() = bl) if (i = 0)show.setText();String s = show.getText();if (s.length() slength)show.setText(show.getText() + e.getActionCommand();if (e.getSource() = b0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届湖南长沙青竹湖九上化学期中学业水平测试试题含解析
- 2026届广东省肇庆市端州区英语九上期末质量检测试题含解析
- 内蒙古呼伦贝尔市扎兰屯市正阳小学2024-2025学年六年级下学期期中考试英语试题(无答案)
- 2026届浙江省嘉兴市高三上学期一模政治试题(含答案)
- 2026届江苏省徐州市新城实验学校九年级化学第一学期期中调研试题含解析
- 辽源彩钢隔断施工方案
- 江苏省盐城市大丰市创新英达学校2026届英语九年级第一学期期末联考模拟试题含解析
- 建筑工程供货担保合同5篇
- 《不离家离婚夫妻共同生活费用管理及监督协议》
- 区块链科技公司股权分割与生态体系建设合同
- 2025年新护士招聘三基考试题库及答案
- 2024年绍兴杭绍临空示范区开发集团有限公司招聘真题
- 2025资产抵押合同(详细)
- 心血管-肾脏-代谢综合征(CKM)综合管理中国专家共识2025解读课件
- 租房合同范本下载(可直接打印)
- (高清版)TDT 1013-2013 土地整治项目验收规程
- 体育原理完整版
- 超声引导下坐骨神经阻滞
- 医院医院质量与安全管理委员会章程
- 小学二年级上册语文全册课件
- 隧道施工安全教育培训
评论
0/150
提交评论