java 编写的计算器源代码.doc_第1页
java 编写的计算器源代码.doc_第2页
java 编写的计算器源代码.doc_第3页
java 编写的计算器源代码.doc_第4页
java 编写的计算器源代码.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java Swing 编写计算器 源代码import java.awt.Button;import java.awt.Color;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JTextField;public class Counter extends Frame / 声明三个面板的布局GridLayout gl1, gl2, gl3,gl4;Panel p0, p1, p2, p3,p4;JTextField tf1;TextField tf2;Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26,b27,b28,b29,b30;StringBuffer str;/ 显示屏所显示的字符串double x, y;/ x和y都是运算数double sum=0;/加和double mul=1;/乘积double sub=0;/减差 令其为输入的第一个值double dev;/除商 令其为输入的第一个值 boolean tag= true; boolean tag1= true; int z = -1,k;/ Z表示单击了那一个运算符.0表示+,1表示-,2表示*,3表示/static double m ;/ 记忆的数字public Counter() gl1 = new GridLayout(1, 4, 10, 0);/ 实例化三个面板的布局gl2 = new GridLayout(4, 1, 0, 15);gl3 = new GridLayout(4, 5, 10, 15); gl4 = new GridLayout(1, 4, 10, 0); tf1 = new JTextField(27);/ 显示屏tf1.setHorizontalAlignment(JTextField.RIGHT);/tf1.setEnabled(false);/tf1.setEditable(false);tf1.setText(0);tf1.addKeyListener(new Tt(); tf2 = new TextField(10);/ 显示记忆的索引值tf2.setEditable(false);/ 实例化所有按钮、设置其前景色并注册监听器b0 = new Button(Backspace);b0.setForeground(Color.red);b0.addActionListener(new Bt();b1 = new Button(CE);b1.setForeground(Color.red);b1.addActionListener(new Bt();b2 = new Button(C);b2.setForeground(Color.red);b2.addActionListener(new Bt();b3 = new Button(MC);b3.setForeground(Color.red);b3.addActionListener(new Bt();b4 = new Button(MR);b4.setForeground(Color.red);b4.addActionListener(new Bt();b5 = new Button(MS);b5.setForeground(Color.red);b5.addActionListener(new Bt();b6 = new Button(M+);b6.setForeground(Color.red);b6.addActionListener(new Bt();b7 = new Button(7);b7.setForeground(Color.blue);b7.addActionListener(new Bt();b8 = new Button(8);b8.setForeground(Color.blue);b8.addActionListener(new Bt();b9 = new Button(9);b9.setForeground(Color.blue);b9.addActionListener(new Bt();b10 = new Button(/);b10.setForeground(Color.red);b10.addActionListener(new Bt();b11 = new Button(sqrt);b11.setForeground(Color.blue);b11.addActionListener(new Bt();b12 = new Button(4);b12.setForeground(Color.blue);b12.addActionListener(new Bt();b13 = new Button(5);b13.setForeground(Color.blue);b13.addActionListener(new Bt();b14 = new Button(6);b14.setForeground(Color.blue);b14.addActionListener(new Bt();b15 = new Button(*);b15.setForeground(Color.red);b15.addActionListener(new Bt();b16 = new Button(%);b16.setForeground(Color.blue);b16.addActionListener(new Bt();b17 = new Button(1);b17.setForeground(Color.blue);b17.addActionListener(new Bt();b18 = new Button(2);b18.setForeground(Color.blue);b18.addActionListener(new Bt();b19 = new Button(3);b19.setForeground(Color.blue);b19.addActionListener(new Bt();b20 = new Button(-);b20.setForeground(Color.red);b20.addActionListener(new Bt();b21 = new Button(1/x);b21.setForeground(Color.blue);b21.addActionListener(new Bt();b22 = new Button(0);b22.setForeground(Color.blue);b22.addActionListener(new Bt();b23 = new Button(+/-);b23.setForeground(Color.blue);b23.addActionListener(new Bt();b24 = new Button(.);b24.setForeground(Color.blue);b24.addActionListener(new Bt();b25 = new Button(+);b25.setForeground(Color.red);b25.addActionListener(new Bt();b26 = new Button(=);b26.setForeground(Color.red);b26.addActionListener(new Bt();b27 = new Button(sin);b27.setForeground(Color.pink);b27.addActionListener(new Bt();b28 = new Button(cos);b28.setForeground(Color.pink);b28.addActionListener(new Bt();b29 = new Button(tan);b29.setForeground(Color.pink);b29.addActionListener(new Bt();b30 = new Button(log);b30.setForeground(Color.pink);b30.addActionListener(new Bt();/ 实例化四个面板p0 = new Panel();p1 = new Panel();p2 = new Panel();p3 = new Panel();p4 = new Panel();/ 创建一个空字符串缓冲区str = new StringBuffer();/ 添加面板p0中的组件和设置其在框架中的位置和大小p0.add(tf1);p0.setBounds(10, 25, 300, 40);/ 添加面板p1中的组件和设置其在框架中的位置和大小p1.setLayout(gl1);p1.add(tf2);p1.add(b0);p1.add(b1);p1.add(b2);p1.setBounds(10, 65, 300, 25);/ 添加面板p2中的组件并设置其的框架中的位置和大小p2.setLayout(gl2);p2.add(b3);p2.add(b4);p2.add(b5);p2.add(b6);p2.setBounds(10, 110, 40, 150);/ 添加面板p3中的组件并设置其在框架中的位置和大小p3.setLayout(gl3);/ 设置p3的布局p3.add(b7);p3.add(b8);p3.add(b9);p3.add(b10);p3.add(b11);p3.add(b12);p3.add(b13);p3.add(b14);p3.add(b15);p3.add(b16);p3.add(b17);p3.add(b18);p3.add(b19);p3.add(b20);p3.add(b21);p3.add(b22);p3.add(b23);p3.add(b24);p3.add(b25);p3.add(b26);p3.setBounds(60, 110, 250, 150);/ 添加面板p4中的组件和设置其在框架中的位置和大小p4.setLayout(gl4);p4.add(b27);p4.add(b28);p4.add(b29);p4.add(b30);p4.setBounds(28, 270, 250, 30);/ 设置框架中的布局为空布局并添加4个面板setLayout(null);add(p0);add(p1);add(p2);add(p3);add(p4);setTitle(计算器);setResizable(false);/ 禁止调整框架的大小/ 匿名类关闭窗口addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e1) System.exit(0););setBackground(Color.lightGray);setBounds(100, 100, 320, 320);setVisible(true);/ 构造监听器class Bt implements ActionListener /z:0表示+,1表示-,2表示*,3表示/public double ttt( )switch( z )case 0:sum = sum + y;y = sum;break;case 1:sub = sub - y;y = sub;break;case 2:mul = mul * y;y = mul;break;case 3:dev = dev / y;y = dev;break;return y;public void actionPerformed(ActionEvent e2) try if (e2.getSource() = b1)/ 选择CE清零 tag = true; tag1 = true;tf1.setText(0);/ 把显示屏清零str.setLength(0);/ 清空字符串缓冲区以准备接收新的输入运算数 else if (e2.getSource() = b2)/ 选择C清零 tag = true; tag1 = true;tf1.setText(0);/ 把显示屏清零str.setLength(0); else if (e2.getSource() = b23)/ 单击+/-选择输入的运算数是正数还是负数x = Double.parseDouble(tf1.getText().trim();tf1.setText( + (-x); else if (e2.getSource() = b27)/ 求sinx = Double.parseDouble(tf1.getText().trim(); tf1.setText( + Math.sin(x);str.setLength(0);y = 0d;else if (e2.getSource() = b28)/ 求cosx = Double.parseDouble(tf1.getText().trim(); tf1.setText( + Math.cos(x);str.setLength(0);y = 0d;else if (e2.getSource() = b29)/ 求tanx = Double.parseDouble(tf1.getText().trim(); tf1.setText( + Math.tan(x);str.setLength(0);y = 0d;else if (e2.getSource() = b30)/ 求logx = Double.parseDouble(tf1.getText().trim();if (x = 0) tf1.setText(此函数无效); else tf1.setText( + Math.log(x);str.setLength(0);y = 0d; else if (e2.getSource() = b25)/ 单击加号按钮获得x的值和z的值并清空y的值 if ( z = 0 | z = -1 )x = y; sum = sum + x;elsesum = this.ttt( );str.setLength(0);/ 清空缓冲区以便接收新的另一个运算数 tf1.setText( + sum); z = 0; else if (e2.getSource() = b20)/ 单击减号按钮获得x的值和z的值并清空y的值if ( z = 1 | z = -1 )x = y;if(tag = true)sub = x;tag = false;elsesub = sub - x;elsesub = this.ttt( );str.setLength(0);z = 1;tf1.setText( + sub); else if (e2.getSource() = b15)/ 单击乘号按钮获得x的值和z的值并清空y的值if(z = 2 |z = -1)x = y;mul = mul * x;elsemul = this.ttt( );str.setLength(0);tf1.setText( + mul);z = 2; else if (e2.getSource() = b10)/ 单击除号按钮获得x的值和z的值并空y的值if(z = 3 |z = -1)x = y;if(tag1 = true)dev = x;tag1 = false;elseif(x=0)tf1.setText(除数不能为零);elsedev = dev / x;elsedev = this.ttt( );str.setLength(0);tf1.setText( + dev);z = 3; else if (e2.getSource() = b26)/ 单击等号按钮输出计算结果str.setLength(0);switch (z) case 0:tf1.setText( + (sum + y);y = Double.parseDouble(tf1.getText().trim();sum=0;break;case 1:tf1.setText( + (sub -y);y = Double.parseDouble(tf1.getText().trim();sub=0;tag = true;break;case 2:tf1.setText( + (mul * y);y = Double.parseDouble(tf1.getText().trim();mul=0;break;case 3:if (y = 0) tf1.setText(除数不能为零); else tf1.setText( + (dev / y);y = Double.parseDouble(tf1.getText().trim();dev=0;tag1 = true;break; else if (e2.getSource() = b24)/ 单击.按钮输入小数if (tf1.getText().trim().indexOf(.) != -1)/ 判断字符串中是否已经包含了小数点 else/ 如果没数点有小if (tf1.getText().trim().equals(0)/ 如果初时显示为0str.setLength(0);/ System.out.println(str);tf1.setText(str.append(0 + e2.getActionCommand().toString(); else if (tf1.getText().trim().equals()/ 如果初时显示为空则不做任何操作 else tf1.setText(str.append(e2.getActionCommand().toString();y = 0d; else if (e2.getSource() = b11)/ 求平方根x = Double.parseDouble(tf1.getText().trim();tf1.setText(数字格式异常);if (x 0)tf1.setText(负数没有平方根);elsetf1.setText( + Math.sqrt(x);str.setLength(0);y = 0d; else if (e2.getSource() = b16)/ 单击了%按钮x = Double.parseDouble(tf1.getText().trim();tf1.setText( + (0.01 * x);str.setLength(0);y = 0d; else if (e2.getSource() = b21)/ 单击了1/X按钮x = Double.parseDouble(tf1.getText().trim();if (x = 0) tf1.setText(除数不能为零); else tf1.setText( + (1 / x);str.setLength(0);y = 0d; else if (e2.getSource() = b3)/ MC为清除内存m = 0d;tf2.setText();str.setLength(0); else if (e2.getSource() = b4)/ MR为重新调用存储的数据if (tf2.getText().trim() != )/ 有记忆数字tf1.setText( + m); else if (e2.getSource() = b5)/ MS为存储显示的数据m = Double.parseDouble(tf1.getText().trim();tf2.setText(M);tf1.setText(0);str.setLength(0); else if (e2.getSource() = b6)/ M+为将显示的数字与已经存储的数据相加要查看新的数字单击MRm = m + Double.parseDouble(tf1.getText().trim(); else/ 选择的是其他的按钮if (e2.getSource() = b22)/ 如果选择的是0这个数字键if (tf1.getText().trim().equals(0)/ 如果显示屏显示的为零

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论