微信小程序 > 微信公开课 > 一个JAVA小程序,计算器的
微信小程序,微信公开课,一个JAVA小程序,计算器的

一个JAVA小程序,计算器的

2019-03-12 17:01:43

微信公开课小程序热门讨论「一个JAVA小程序,计算器的」最新回复-text.setEditable(false);//得写到方法体中去,单独是不能存在的,你看来是写得头晕了哈第二个类那样是用不了text.setText();的没有这个对象,你把它们写到同一个类中去就没问题了。非要这么写,那你得再写个方法将text对象传递出来在第二个类中获取来使用……你写得有点儿乱,我也不知道怎么改了!写一个太花时间,我这边给你一个吧!你说按钮距离那就是你布局没有处理好!建议直接像下面给出的程序那样!也简单出了问题了不怕,问题越多进步越快哈有问题你可以加这个群进行提问:5358308,javaworld!(two)给你一个计算器程序//第一个类是GUI,两个类放两文件里去importjavax.swing.*;importjava.awt.Container;importjava.awt.event.*;publicclassCalculate_GUIextendsJFrame{privateJPanelp1;privateJButtonkeyButton[]=newJButton[16],signButton,clearButton,deleteButton;privateJTextFieldoutputField;privateContainercontentPane;privatebooleanfirstInput=true;privateCalculate_Modelmodel=newCalculate_Model();publicCalculate_GUI(){p1=newJPanel();keyButton[0]=newJButton(1);//创建各个按钮keyButton[1]=newJButton(2);keyButton[2]=newJButton(3);keyButton[3]=newJButton(/);keyButton[4]=newJButton(4);keyButton[5]=newJButton(5);keyButton[6]=newJButton(6);keyButton[7]=newJButton(*);keyButton[8]=newJButton(7);keyButton[9]=newJButton(8);keyButton[10]=newJButton(9);keyButton[11]=newJButton();keyButton[12]=newJButton(0);keyButton[13]=newJButton(.);keyButton[14]=newJButton(=);keyButton[15]=newJButton(+);clearButton=newJButton(c);signButton=newJButton(+/);deleteButton=newJButton(←);outputField=newJTextField();//它允许编辑单行文本outputField.setText(0);outputField.setEditable(false);//指示此TextComponent是否应该为可编辑的contentPane=this.getContentPane();//返回此窗体的contentPane对象;this.setSize(250,250);p1.setLayout(newjava.awt.GridLayout(4,5));//创建具有4行5列的布局for(inti=0;ikeyButton.length;i++)//在容器中画上按钮{if(i==4)p1.add(deleteButton);if(i==8)p1.add(clearButton);if(i==12)p1.add(signButton);keyButton[i].setFont(newjava.awt.Font(Dialog,3,15));//设置字体Dialog字体名,样式,大小p1.add(keyButton[i]);}contentPane.add(outputField,java.awt.BorderLayout.NORTH);contentPane.add(p1,java.awt.BorderLayout.CENTER);this.show();}//用于显示界面publicvoidregistEvent()//注册各个事件{this.addWindowListener(newWindowAdapter()//窗口事件,窗口关闭里程序关闭{publicvoidwindowClosing(WindowEventwe){System.exit(0);}});for(inti=0;ikeyButton.length;i++){keyButton[i].addActionListener(newkeyButtonHandler());//为每一个按钮添加监听器}signButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){outputField.setText(String.valueOf(model.toSign(Double.parseDouble(outputField.getText()))));}});deleteButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){outputField.setText(model.backSpace(outputField.getText()));if(outputField.getText().equals(0))firstInput=true;}});clearButton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){firstInput=true;outputField.setText(0);model.reset();}});}classkeyButtonHandlerimplementsActionListener{publicvoidactionPerformed(ActionEventae){charactionCommand=ae.getActionCommand().charAt(0);switch(actionCommand){case1:case2:case3:case4:case5:case6:case7:case8:case9:case0:case.:if(firstInput)//是否为首次输入{outputField.setText(String.valueOf(actionCommand));firstInput=false;}elseoutputField.setText(outputField.getText()+actionCommand);break;case+:case:case*:case/:if(firstInput)model.setOperate(actionCommand);else{model.setOperateNumber(Double.parseDouble(outputField.getText()));model.calculating();model.setOperate(actionCommand);outputField.setText(String.valueOf(model.getResult()));firstInput=true;}break;case=:if(firstInput){model.calculating();outputField.setText(String.valueOf(model.getResult()));}else{model.setOperateNumber(Double.parseDouble(outputField.getText()));model.calculating();outputField.setText(String.valueOf(model.getResult()));firstInput=true;}}}}publicstaticvoidmain(Stringargs[]){newCalculate_GUI().registEvent();}}/***********************************************计算的模块****************************/publicclassCalculate_Model{privatedoubleresult;privatedoubleoperateNumber;privatecharoperate;publicCalculate_Model()//构造方法进行初始化{result=0;//结果operateNumber=0;//操作数operate=;//操作符}publicvoidsetResult(doublen)//设置结果,成员变量result是private的{result=n;}publicvoidsetOperate(charo)//设置操作符{operate=o;}publicvoidsetOperateNumber(doublen)//设置操作数{operateNumber=n;}publicdoublegetResult()//获取结果{returnresult;}publicvoidcalculating()//计算过程{switch(operate){case:result=operateNumber;break;//分别对操作判断后进行相应操作case+:result+=operateNumber;break;case:result=operateNumber;break;case*:result*=operateNumber;break;case/:result/=operateNumber;break;}}publicvoidreset()//重设方法{result=0;operateNumber=0;operate=;}publicdoubletoSign(doublen)//正负转化{return0(n0);}publicStringbackSpace(Stringn)//对backSpace设置{StringreResult=0;try{reResult=n.substring(0,n.length()1);//从第一个开始取前n1个Double.parseDouble(reResult);//将其转化为Double型}catch(NumberFormatExceptione){reResult=0;}returnreResult;}}
packagejavatest;importjava.awt.Container;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.ArrayList;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclasscalculatorfaceextendsJFrame{ /** 每次用时都要按下clear按钮,然后就是小数点按钮我没有处理,做的不是太好,里面除运算无法计算到小数  */privatestaticfinallongserialVersionUID=1581029666853134020L;ArrayListStringal=newArrayListString(); JButtonjb1=newJButton(1); JButtonjb2=newJButton(2); JButtonjb3=newJButton(3); JButtonjb4=newJButton(4); JButtonjb5=newJButton(5); JButtonjb6=newJButton(6); JButtonjb7=newJButton(7); JButtonjb8=newJButton(8); JButtonjb9=newJButton(9); JButtonjb0=newJButton(0); JButtonjbxing=newJButton(*); JButtonjbdian=newJButton(.); JButtonjbjian=newJButton(-); JButtonjbjia=newJButton(+); JButtonjbchu=newJButton(/); JButtonjbdeng=newJButton(=); JButtonjbC=newJButton(Clear); publicJLabeljl=newJLabel(0.,JLabel.RIGHT); publiccalculatorface(){  super(计算器);  init(); } publicvoidinit(){  Containerc=getContentPane();  JPaneljp1=newJPanel();  JPaneljp2=newJPanel();  JPaneljp3=newJPanel();  JPaneljp4=newJPanel();  JPaneljp5=newJPanel();  JPaneljp6=newJPanel();  /*设定容器的布局方式*/  jp1.setLayout(newGridLayout(1,1));  jp2.setLayout(newGridLayout(1,4));  jp3.setLayout(newGridLayout(1,4));  jp4.setLayout(newGridLayout(1,4));  jp5.setLayout(newGridLayout(1,4));  jp6.setLayout(newGridLayout(1,4));  c.setLayout(newGridLayout(6,1));  /*将文本域放入容器jp1*/ jp1.add(jl); /*将按钮放入容器jp2*/ jp2.add(jb7); jp2.add(jb8); jp2.add(jb9); jp2.add(jbchu); /*将按钮放入容器jp3*/ jp3.add(jb4); jp3.add(jb5); jp3.add(jb6); jp3.add(jbxing); /*将按钮放入容器jp4*/ jp4.add(jb1); jp4.add(jb2); jp4.add(jb3); jp4.add(jbjian); /*将按钮放入容器jp5*/ jp5.add(jb0); jp5.add(jbdian); jp5.add(jbjia); jp5.add(jbdeng); /*将按钮放入容器jp5*/ jp6.add(jbC); /*将容器放入框架*/ c.add(jp1); c.add(jp6); c.add(jp2); c.add(jp3); c.add(jp4); c.add(jp5); /*设置大小并显示*/ this.setSize(300,250); this.setVisible(true); /*实例化一个监听器对象*/ actionDemoad=newactionDemo(); /*为组件添加监听器*/ jbC.addActionListener(ad); jb1.addActionListener(ad); jb2.addActionListener(ad); jb3.addActionListener(ad); jb4.addActionListener(ad); jb5.addActionListener(ad); jb6.addActionListener(ad); jb7.addActionListener(ad); jb8.addActionListener(ad); jb9.addActionListener(ad); jb0.addActionListener(ad); jbxing.addActionListener(ad); jbdian.addActionListener(ad); jbjian.addActionListener(ad); jbjia.addActionListener(ad); jbdeng.addActionListener(ad); jbchu.addActionListener(ad); } /*事件监听器*/ classactionDemoimplementsActionListener{ /*具体的功能在这里实现*/  publicvoidactionPerformed(ActionEvente){if(e.getSource().equals(jbC)){jl.setText();al.add();al.add();al.add();al.add();al.add();}if(e.getSource().equals(jb1)){ jl.setText(); Stringstr=jl.getText(); str=str+1; jl.setText(str);}elseif(e.getSource().equals(jb2)){jl.setText();Stringstr=jl.getText();str=str+2;jl.setText(str);}elseif(e.getSource().equals(jb3)){Stringstr=jl.getText();str=str+3;jl.setText(str);}elseif(e.getSource().equals(jb4)){Stringstr=jl.getText();str=str+4;jl.setText(str);}elseif(e.getSource().equals(jb5)){Stringstr=jl.getText();str=str+5;jl.setText(str);}elseif(e.getSource().equals(jb6)){Stringstr=jl.getText();str=str+6;jl.setText(str);}elseif(e.getSource().equals(jb7)){Stringstr=jl.getText();str=str+7;jl.setText(str);}elseif(e.getSource().equals(jb8)){Stringstr=jl.getText();str=str+8;jl.setText(str);}elseif(e.getSource().equals(jb9)){Stringstr=jl.getText();str=str+9;jl.setText(str);}elseif(e.getSource().equals(jb0)){Stringstr=jl.getText();str=str+0;jl.setText(str);}elseif(e.getSource().equals(jbdian)){Stringstr=jl.getText();str=str+.;jl.setText(str);}elseif(e.getSource().equals(jbxing)){al.set(0,jl.getText());al.set(1,xing);jl.setText();}elseif(e.getSource().equals(jbchu)){al.set(0,jl.getText());al.set(1,chu);jl.setText();}elseif(e.getSource().equals(jbjian)){al.set(0,jl.getText());al.set(1,jian);jl.setText();}elseif(e.getSource().equals(jbjia)){al.set(0,jl.getText());al.set(1,jia);jl.setText();}elseif(e.getSource().equals(jbdeng)){/*当点击等于号时,我首先从数组索引1处取得该元素判断他是什么运算符*/Stringoperator=(String)al.get(1);System.out.println(该运算符是:  +operator);/*当点击等于号时,从标签处获得数字是多少*/intlast=Integer.parseInt(jl.getText()); if(operator.equals(jian)){ /*将索引为1的元素设置为空的,以便当你连续按等于号有正确的输出*/ al.set(1,); /*获取第一次输入的数字*/ intfirst=Integer.parseInt((String)al.get(0)); longsum=first-last; IntegerinLast=newInteger(last); StringnewInLast=inLast.toString(); al.set(2,newInLast); al.set(3,JIAN); jl.setText(newLong(sum).toString());}if(operator.equals(jia)){ /*将索引为1的元素设置为空的,以便当你连续按等于号有正确的输出*/ al.set(1,); /*获取第一次输入的数字*/ intfirst=Integer.parseInt((String)al.get(0)); longsum=first+last; IntegerinLast=newInteger(last); StringnewInLast=inLast.toString(); al.set(2,newInLast); al.set(3,JIA); jl.setText(newLong(sum).toString());}if(operator.equals(chu)){ /*将索引为1的元素设置为空的,以便当你连续按等于号有正确的输出*/ al.set(1,); /*获取第一次输入的数字*/ intfirst=Integer.parseInt((String)al.get(0)); longsum=first/last; IntegerinLast=newInteger(last); StringnewInLast=inLast.toString(); al.set(2,newInLast); al.set(3,CHU); jl.setText(newLong(sum).toString());}if(operator.equals(xing)){ /*将索引为1的元素设置为空的,以便当你连续按等于号有正确的输出*/ al.set(1,); /*获取第一次输入的数字*/ intfirst=Integer.parseInt((String)al.get(0)); longsum=first*last; IntegerinLast=newInteger(last); StringnewInLast=inLast.toString(); al.set(2,newInLast); al.set(3,XING); jl.setText(newLong(sum).toString());}if(operator.equals()){ /*当你在一直按等于号之前,获得标签上的数字*/ intin=Integer.parseInt(jl.getText()); System.out.println(当你在一直按等于号之前,获得标签上的数字  +in); /*表示当按完运算符后再按的数字号码是多少,这其实已经保存在数组里了,这个号码可以说是last变量存储的*/ Stringxlast=(String)al.get(2); System.out.println(表示当按完运算符后再按的数字号码是多少  +xlast); intnewxlast=Integer.parseInt(xlast); longsum=0; if(al.get(3).equals(JIAN)){  sum=in-newxlast;  } if(al.get(3).equals(JIA)){  sum=in+newxlast; } if(al.get(3).equals(CHU)){ sum=in/newxlast;} if(al.get(3).equals(XING)){ sum=in*newxlast;} System.out.println(sum表示最终的结果是  +sum); jl.setText(newLong(sum).toString());}}  }} publicstaticvoidmain(String[]args) {  calculatorfacec=newcalculatorface(); } }这是我做的计算器,有一个缺点,就是除法不是很准确,剩下运算都是对的。第一次计算前,要按下一下clear按钮,以后如果要重新计算的话还需要按一下clear按钮。结果才会正确。 更多有关「一个JAVA小程序,计算器的」的疑问请扫码关注微信公开课+小程序!
标签:微信公开课,小程序
微信小程序,微信公开课,一个JAVA小程序,计算器的

「一个JAVA小程序,计算器的」热议话题订阅

方法1:微信扫描微信公开课小程序码即可订阅热议话题「一个JAVA小程序,计算器的」

方法2:微信搜索微信公开课小程序名称进入,即可订阅热议话题「一个JAVA小程序,计算器的」

方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热议话题「一个JAVA小程序,计算器的」

微信公开课小程序热议话题「一个JAVA小程序,计算器的」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。

微信公开课热议话题「一个JAVA小程序,计算器的」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。