写了一个简单的小计算器,带历史记录
来源:互联网 发布:淘宝天机平台加入条件 编辑:程序博客网 时间:2024/05/01 17:14
package myCalculator;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener{//*****************全局变量********************JTextField jtf=new JTextField(21);//显示区初始显示0,长度40boolean flagjtf=true;//是否是0float result;//结果存放int calnum=1;//次数String caltext="";//存放要显示的字符enum Suanfa{jia,jian,cheng,chu};Suanfa suanfa=null;//标记是哪种算法Suanfa lastsuanfa=null;//上一次的算法JTextArea jta=new JTextArea("历史记录:\n",9,30);//***************************************** public Calculator(){//*****************初始设置********************Container dingceng=getContentPane();//定义顶层容器setLayout(new BorderLayout());//新建管理器//panelJPanel pxs=new JPanel();JPanel phistory=new JPanel();JPanel pall=new JPanel();GridBagLayout allgb=new GridBagLayout();pall.setLayout(allgb);GridBagConstraints call=new GridBagConstraints(); jtf.setHorizontalAlignment(JTextField.RIGHT);//右对齐 jtf.setText("0"); pxs.add(jtf); phistory.add(jta); JButton bnum0=new JButton("0");JButton bnum1=new JButton("1");JButton bnum2=new JButton("2");JButton bnum3=new JButton("3");JButton bnum4=new JButton("4");JButton bnum5=new JButton("5");JButton bnum6=new JButton("6");JButton bnum7=new JButton("7");JButton bnum8=new JButton("8");JButton bnum9=new JButton("9");JButton bdot=new JButton(".");JButton bequ=new JButton("=");JButton bjia=new JButton("+");JButton bjian=new JButton("-");JButton bcheng=new JButton("×");JButton bchu=new JButton("÷");JButton bql=new JButton("C");JButton bce=new JButton("CE");JButton btuige=new JButton("←");JPanel panniu=new JPanel();GridBagLayout lanniu=new GridBagLayout();//新建网格组布局panniu.setLayout(lanniu);GridBagConstraints cons=new GridBagConstraints();cons.fill=GridBagConstraints.BOTH;//有剩余空间,空着cons.weightx=0;cons.weighty=0;//增量域=0cons.gridwidth=1;cons.gridheight=1;//大小cons.insets=new Insets(2,2,2,2); /*位置*/ cons.gridx=0;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum7,cons);cons.gridx=1;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum8, cons);cons.gridx=2;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum9, cons);cons.gridx=3;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(bchu, cons);cons.gridx=4;cons.gridy=0;cons.gridheight=1;cons.gridwidth=1;panniu.add(btuige, cons);cons.gridx=0;cons.gridy=1;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum4, cons);cons.gridx=1;cons.gridy=1;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum5, cons);cons.gridx=2;cons.gridy=1;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum6, cons);cons.gridx=3;cons.gridy=1;cons.gridheight=1;cons.gridwidth=1;panniu.add(bcheng, cons);cons.gridx=4;cons.gridy=1;cons.gridheight=1;cons.gridwidth=1;panniu.add(bql, cons);cons.gridx=0;cons.gridy=2;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum1, cons);cons.gridx=1;cons.gridy=2;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum2, cons);cons.gridx=2;cons.gridy=2;cons.gridheight=1;cons.gridwidth=1;panniu.add(bnum3, cons);cons.gridx=3;cons.gridy=2;cons.gridheight=1;cons.gridwidth=1;panniu.add(bjian, cons);cons.gridx=4;cons.gridy=2;cons.gridheight=1;cons.gridwidth=1;panniu.add(bce, cons);cons.gridx=0;cons.gridy=3;cons.gridheight=1;cons.gridwidth=2;panniu.add(bnum0, cons);cons.gridx=2;cons.gridy=3;cons.gridheight=1;cons.gridwidth=1;panniu.add(bdot, cons);cons.gridx=3;cons.gridy=3;cons.gridheight=1;cons.gridwidth=1;panniu.add(bjia, cons);cons.gridx=4;cons.gridy=3;cons.gridheight=1;cons.gridwidth=1;panniu.add(bequ, cons);call.gridx=0;call.gridy=0;call.gridheight=1;call.gridwidth=1;pall.add(pxs,call);call.gridx=0;call.gridy=1;call.gridheight=1;call.gridwidth=1;pall.add(panniu,call);call.gridx=1;call.gridy=0;call.gridheight=2;call.gridwidth=1;pall.add(phistory,call);dingceng.add(pall);//窗体设置setSize(600,190);setTitle("计算器");setVisible(true);setResizable(false);//*******************************************//**************监听器*********************** bnum0.addActionListener(this); bnum1.addActionListener(this); bnum2.addActionListener(this); bnum3.addActionListener(this); bnum4.addActionListener(this); bnum5.addActionListener(this); bnum6.addActionListener(this); bnum7.addActionListener(this); bnum8.addActionListener(this); bnum9.addActionListener(this); bql.addActionListener(this); btuige.addActionListener(this); bce.addActionListener(this); bequ.addActionListener(this); bjia.addActionListener(this); bjian.addActionListener(this); bcheng.addActionListener(this); bchu.addActionListener(this); bdot.addActionListener(this); jtf.addActionListener(this);//*******************************************}//**************按钮事件*********************** public void actionPerformed(ActionEvent e){ String gotbutton=e.getActionCommand(); /*按数字*/ if(gotbutton=="0") { if(flagjtf) {jtf.setText("0");} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"0"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="1"){ if(flagjtf) {jtf.setText("1");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"1"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="2") { if(flagjtf) {jtf.setText("2");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"2"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="3") { if(flagjtf) {jtf.setText("3");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"3"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="4") { if(flagjtf) {jtf.setText("4");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"4"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="5") { if(flagjtf) {jtf.setText("5");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"5"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="6") { if(flagjtf) {jtf.setText("6");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"6"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="7") { if(flagjtf) {jtf.setText("7");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"7"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="8") { if(flagjtf) {jtf.setText("8");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"8"); flagjtf=false;} jtf.requestFocus(); } else if(gotbutton=="9") { if(flagjtf) {jtf.setText("9");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"9"); flagjtf=false;} jtf.requestFocus(); }//小数点 else if(gotbutton==".") { if(flagjtf) {jtf.setText("0.");flagjtf=false;} else{String currenttext1=jtf.getText(); jtf.setText(currenttext1+"."); flagjtf=false;} jtf.requestFocus(); }/*清零*/ else if(gotbutton=="C") { jtf.setText("0");flagjtf=true; jtf.requestFocus(); }/*CE*/ else if(gotbutton=="CE") { jtf.setText("0");flagjtf=true; result=0;caltext=""; lastsuanfa=null; suanfa=null; jtf.requestFocus(); calnum=1;}/*退格*/ else if(gotbutton=="←") { if(flagjtf) {} else{ String currenttext1=jtf.getText(); int jtfnum= currenttext1.length() ; if (currenttext1.length()==1) {jtf.setText("0");flagjtf=true;} else{ jtf.setText(currenttext1.substring(0,jtfnum-1)); } } jtf.requestFocus(); }/*加法*/ else if(gotbutton=="+") { if(calnum==1){ calnum=2; lastsuanfa=Suanfa.jia; suanfa=Suanfa.jia; //计算 result=Float.valueOf(jtf.getText()).floatValue(); //显示 caltext=jtf.getText()+"+"; jtf.setText("0");flagjtf=true;//重置 jtf.requestFocus(); } else{ lastsuanfa=suanfa; suanfa=Suanfa.jia; calnum=2; //计算 suan(Float.valueOf(jtf.getText()).floatValue()); //显示 caltext=caltext+jtf.getText()+"+"; jtf.setText("0");flagjtf=true;//重置 } }/*减法*/ else if(gotbutton=="-") { if(calnum==1){ calnum=2; lastsuanfa=Suanfa.jian; suanfa=Suanfa.jian; //计算 result=Float.valueOf(jtf.getText()).floatValue(); //显示 caltext=jtf.getText()+"-"; jtf.setText("0");flagjtf=true;//重置 jtf.requestFocus(); } else{ lastsuanfa=suanfa; suanfa=Suanfa.jian; calnum=2; //计算 suan(Float.valueOf(jtf.getText()).floatValue()); //显示 caltext=caltext+jtf.getText()+"-"; jtf.setText("0");flagjtf=true;//重置 } } /*乘法*/ else if(gotbutton=="×") { if(calnum==1){ calnum=2; lastsuanfa=Suanfa.cheng; suanfa=Suanfa.cheng; //计算 result=Float.valueOf(jtf.getText()).floatValue(); //显示 caltext=jtf.getText()+"×"; jtf.setText("0");flagjtf=true;//重置 jtf.requestFocus(); } else{ lastsuanfa=suanfa; suanfa=Suanfa.cheng; calnum=2; //计算 suan(Float.valueOf(jtf.getText()).floatValue()); //显示 caltext=caltext+jtf.getText()+"×"; jtf.setText("0");flagjtf=true;//重置 } } /*除法*/ else if(gotbutton=="÷") { if(calnum==1){ calnum=2; lastsuanfa=Suanfa.chu; suanfa=Suanfa.chu; //计算 result=Float.valueOf(jtf.getText()).floatValue(); //显示 caltext=jtf.getText()+"÷"; jtf.setText("0");flagjtf=true;//重置 jtf.requestFocus(); } else{ lastsuanfa=suanfa; suanfa=Suanfa.chu; calnum=2; //计算 suan(Float.valueOf(jtf.getText()).floatValue()); //显示 caltext=caltext+jtf.getText()+"÷"; jtf.setText("0");flagjtf=true;//重置 } } /*====*/ else if(gotbutton=="=") { lastsuanfa=suanfa; suan(Float.valueOf(jtf.getText()).floatValue()); //显示 caltext=caltext+jtf.getText()+"="+result; jta.append(caltext+"\n"); jtf.setText(String.valueOf(result)); flagjtf=true;//重置 calnum=1;result=0; caltext=""; jtf.requestFocus(); } }//*******************************************//*****************主函数********************public static void main(String[] args){Calculator mycal=new Calculator();mycal.setVisible(true);mycal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );}//*******************************************//**************计算*****************************public void suan(float x){if(lastsuanfa==Suanfa.jia)result+=x;else if(lastsuanfa==Suanfa.jian)result-=x; else if(lastsuanfa==Suanfa.cheng)result*=x;else if(lastsuanfa==Suanfa.chu)result/=x;}//******************************************* }
阅读全文
0 0
- 写了一个简单的小计算器,带历史记录
- 自己写了一个小的计算器···
- 自学的android,写了一个很简单的计算器。
- iOS实现带历史记录功能的计算器
- JavaScript写了个简单的计算器
- c写的一个简单的计算器
- JSP写的一个简单计算器
- 利用javascript写一个简单的计算器
- 分享一个java写的简单计算器
- 用Flex写的一个简单计算器
- 用Flex写的一个简单计算器
- javasrcpt写一个简单的计算器
- javascript写一个简单的计算器程序
- java 写一个简单的计算器
- 怎样用Java写一个简单的计算器?
- 用js写一个简单的计算器
- 仿微软写了一个win32 计算器小程序
- 学了String写的一个简单的小功能。
- Xamarin.Andrind 设置页面启动项
- php 读取超大文件
- 培训第四天,选择结构和数组
- 问题 U: 英尺转换为米数
- 长连接与短连接
- 写了一个简单的小计算器,带历史记录
- Android点击Button切换多个图片显示
- Tomcat 架构分析(四) Servlet和Jsp模块
- Linux系统常用工具安装教程
- HDU1071
- 问题 V: 磅数转化为千克
- 一个简单java爬虫知乎某个话题下的照片
- nginx实现负载均衡
- android产品研发-应用内跳转协议scheme