您的位置:程序门 -> java -> j2se / 基础类



又遇到难题啦,急!!!!!!!!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


又遇到难题啦,急!!!!!!!!!!
发表于:2007-12-26 08:53:36 楼主
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;

public   class   jisuanqi   extends   jframe   implements   actionlistener{
                private   float   num1,num2,num;   //分别用来存储运算数和结果
                private   char   sign;                       //存储输入的运算符
               
                //定义并初始化控件
                private   jpanel   p1=new   jpanel();
                private   jpanel   p2=new   jpanel();
                private   jpanel   p3=new   jpanel();
                private   jpanel   p4=new   jpanel();
                private   jpanel   p5=new   jpanel();
                private   jpanel   p6=new   jpanel();
                private   jpanel   p7=new   jpanel();
                private   jpanel   p8=new   jpanel();
                private   jpanel   p9=new   jpanel();
               
                private   jtextfield   text=new   jtextfield("0",20);//定义文本域初始值为0
               
                private   jbutton   clear=new   jbutton("清除");
               
                private   jbutton   b0=new   jbutton("0");
                private   jbutton   b1=new   jbutton("1");
                private   jbutton   b2=new   jbutton("2");
                private   jbutton   b3=new   jbutton("3");
                private   jbutton   b4=new   jbutton("4");
                private   jbutton   b5=new   jbutton("5");
                private   jbutton   b6=new   jbutton("6");
                private   jbutton   b7=new   jbutton("7");
                private   jbutton   b8=new   jbutton("8");
                private   jbutton   b9=new   jbutton("9");
                private   jbutton   ab=new   jbutton("a");
                private   jbutton   b=new   jbutton("b");
                private   jbutton   c=new   jbutton("c");
                private   jbutton   d=new   jbutton("d");
                private   jbutton   e=new   jbutton("e");
                private   jbutton   f=new   jbutton("f");
               
                private   jbutton   cheng=new   jbutton("*");
                private   jbutton   chu=new   jbutton("/");
                private   jbutton   jia=new   jbutton("+");
                private   jbutton   jian=new   jbutton("-");
                private   jbutton   deng=new   jbutton("=");
                private   jbutton   dian=new   jbutton(".");
                private   jbutton   sqrt=new   jbutton("sqrt");
                private   jbutton   mee=new   jbutton("^");
             
                  private   jbutton   ox=new   jbutton("二进制");
                  private   jbutton   dx=new   jbutton("十进制");
                  private   jbutton   hex=new   jbutton("十六进制");
               
               
               
                public   jisuanqi(){    
                                super("计算器");
                                setresizable(false);//屏蔽最大化  
                                this.getcontentpane().setlayout(new   gridlayout(9,1));
                                this.getcontentpane().add(p1);  
                                this.getcontentpane().add(p6);  
                                this.getcontentpane().add(p2);  
                                this.getcontentpane().add(p3);  
                                this.getcontentpane().add(p4);  
                                this.getcontentpane().add(p5);
                                this.getcontentpane().add(p7);  
                                this.getcontentpane().add(p8);  
                                this.getcontentpane().add(p9);    
                               
                                //按钮
                                p1.add(text);

                                p6.setlayout(new   borderlayout());
                                p6.add("center",clear);
                               
                                p2.setlayout(new   gridlayout(1,4));
                                p2.add(b7);   p2.add(b8);   p2.add(b9);   p2.add(jia);
                               
                                p3.setlayout(new   gridlayout(1,4));
                                p3.add(b4);   p3.add(b5);   p3.add(b6);   p3.add(jian);
                               
                                p4.setlayout(new   gridlayout(1,4));
                                p4.add(b1);   p4.add(b2);   p4.add(b3);   p4.add(cheng);
                               
                                p5.setlayout(new   gridlayout(1,4));
                                p5.add(dian);   p5.add(b0);   p5.add(ab);   p5.add(chu);
                               
                                p7.setlayout(new   gridlayout(1,4));
                                p7.add(b);   p7.add(c);   p7.add(d);   p7.add(e);
                               
                                  p8.setlayout(new   gridlayout(1,4));
                                p8.add(f);   p8.add(ox);   p8.add(dx);   p8.add(hex);
                               
                                p9.setlayout(new   gridlayout(1,3));
                                p9.add(sqrt);   p9.add(mee);   p9.add(deng);
                               
                                b0.addactionlistener(this);
                                b1.addactionlistener(this);
                                b2.addactionlistener(this);
                                b3.addactionlistener(this);
                                b4.addactionlistener(this);
                                b5.addactionlistener(this);
                                b6.addactionlistener(this);
                                b7.addactionlistener(this);
                                b8.addactionlistener(this);
                                b9.addactionlistener(this);
                                /*ab.addactionlistener(this);
                                b.addactionlistener(this);
                                c.addactionlistener(this);
                                d.addactionlistener(this);
                                e.addactionlistener(this);
                                f.addactionlistener(this);*/
                               
                                                                b0.addkeylistener(new   keyboard());
                                                                b1.addkeylistener(new   keyboard());
                                                                b2.addkeylistener(new   keyboard());
                                                                b3.addkeylistener(new   keyboard());
                                                                b4.addkeylistener(new   keyboard());
                                                                b5.addkeylistener(new   keyboard());
                                                                b6.addkeylistener(new   keyboard());
                                                                b7.addkeylistener(new   keyboard());
                                                                b8.addkeylistener(new   keyboard());
                                                                b9.addkeylistener(new   keyboard());
                                                                /*a.addkeylistener(new   keyboard());
                                                                b.addkeylistener(new   keyboard());
                                                                c.addkeylistener(new   keyboard());
                                                                d.addkeylistener(new   keyboard());
                                                                e.addkeylistener(new   keyboard());
                                                                f.addkeylistener(new   keyboard());*/
                                                               
                                                               
                                clear.addactionlistener(this);
                                jia.addactionlistener(this);
                                jian.addactionlistener(this);
                                cheng.addactionlistener(this);
                                chu.addactionlistener(this);
                                deng.addactionlistener(this);
                                dian.addactionlistener(this);
                                sqrt.addactionlistener(this);
                                mee.addactionlistener(this);
                             

                                                                clear.addkeylistener(new   keyboard());
                                                                jia.addkeylistener(new   keyboard());
                                                                jian.addkeylistener(new   keyboard());
                                                                cheng.addkeylistener(new   keyboard());
                                                                chu.addkeylistener(new   keyboard());
                                                                deng.addkeylistener(new   keyboard());
                                                                dian.addkeylistener(new   keyboard());
                                                                sqrt.addkeylistener(new   keyboard());
                                                                mee.addkeylistener(new   keyboard());
                                                             
                                                               
                                   


                                text.addkeylistener(new   keyboard());
                               
                                pack();show();
                               
                                //窗口关闭
                                addwindowlistener(new   windowadapter(){
                                                public   void   windowclosing(windowevent   we){
                                                                system.exit(0);
                                                                }
                                                });
                                                text.seteditable(false);//去掉文本的可编辑性
                                                text.sethorizontalalignment(text.right);//文本右对齐
                                }
               
               
发表于:2007-12-26 08:59:391楼 得分:0
上面只是一半,下面还有。。。。。
麻烦大家了
//按钮事件
                public   void   actionperformed(actionevent   e){
                                string   input=e.getactioncommand();//定义input存储按钮点击产生的值
                                string   str="0123456789abcdef";
                                string   ysf="+-*/^";
                               
                                //数字输入
                                if(str.indexof(input)> =0){
                                                if(text.gettext().equals("0"))
                                                    text.settext(input);//若textfield中初始值为零则textfield中显示输入的数字
                                                else
                                                    text.settext(text.gettext()+input);//如果textfield中的值不是零则叠加
                                                }
                                               
                                //小数点
                                else   if(input.equals("."))
                                            text.settext(text.gettext()+input);
                                 
                                //运算符
                                else   if(ysf.indexof(input)> =0){
                                                num1=float.parsefloat(text.gettext());//输入运算符时num1存储textfield中的值
                                                text.settext("");
                                                sign=ysf.charat(ysf.indexof(input));//sign读取输入的运算符
                                                }
                               
                                //等号                
                                else   if(input.equals("=")){
                                                num2=float.parsefloat(text.gettext());//num2存储点击运算符后的数值
                                               
                                             
switch(sign){
                                                                //加法
                                                                case   '+':{
                                                                                num=num1+num2;
                                                                                text.settext(""+num);
                                                                                break;
                                                                                }
                                                                               
                                                                //减法
                                                                case   '-':{
                                                                                num=num1-num2;
                                                                                text.settext(""+num);
                                                                                break;
                                                                                }
                                                               
                                                                //乘法
                                                                case   '*':{
                                                                                num=num1*num2;
                                                                                text.settext(""+num);
                                                                                break;
                                                                                }
                                                                               
                                                                //除法
                                                                case   '/':{
                                                                                if(num2==0)
                                                                                    text.settext("除数不能为零");//除数为零,则提示除数不能为零
                                                                                else{
                                                                                                num=num1/num2;
                                                                                                text.settext(""+num);
                                                                                                break;
                                                                                                }
                                                               
                                                                                }
                                                                //幂
                                                                case   '^':{
                                                                int   i=0,m=mum1;
                                                                                double   s=1;
                                                                                    for   (i=1;i <=mum2;i++)
                                                                                            s=s*m;
                                                                                              mum=s;
                                                                                              text.settext(""+num);
                                                                                                break;
                                                             
                                                                                          }
                                                                }
                                                }
                                               
                                                //清除
                                                else   if(input.equals("清除")){
                                                                num='   ';
                                                                num1='   ';
                                                                num2='   ';
                                                                sign='   ';
                                                                text.settext("0");
                                                                }
                                }

                               
                //键盘事件
                class   keyboard   implements   keylistener{
                                char   ysf2='   ';//存储运算符
                               
                                //按下事件
                                public   void   keypressed(keyevent   ke){
                                                if(ke.getkeycode()==27){//清除(esc)
                                                                num1='   ';
                                                                num2='   ';
                                                                num='   ';
                                                                text.settext("0");
                                                                }
                                                               
                                                if((ke.getkeycode()==10) ¦ ¦(ke.getkeychar()=='=')){//回车或等号
                                                                num2=float.parsefloat(text.gettext());//num2存储点击运算符后的数值
                                                                switch(ysf2){
                                                                                case   '+':{
                                                                                                num=num1+num2;
                                                                                                text.settext(""+num);
                                                                                                break;
                                                                                                }
                                                                                case   '-':{
                                                                                                num=num1-num2;
                                                                                                text.settext(""+num);
                                                                                                break;
                                                                                                }
                                                                                case   '*':{
                                                                                                num=num1*num2;
                                                                                                text.settext(""+num);
                                                                                                break;
                                                                                                }
                                                                                case   '/':{
                                                                                                if(num2==0){
                                                                                                    text.settext("除数不能为零");
                                                                                                                }
                                                                                                else{
                                                                                                                num=num1/num2;
                                                                                                                text.settext(""+num);
                                                                                                                }
                                                                                                break;
                                                                                                }
                                                                                case   '^':{
                                                                                      int   i=0,m=mum1;
                                                                                                        double   s=1;
                                                                                                        for   (i=1;i <=mum2;i++)
                                                                                                            s=s*m;
                                                                                                          mum=s;
                                                                                                text.settext(""+num);
                                                                                                break;
                                                             
                                                                                          }
                                                                                }
                                                                }
                                               
                                        }
  还有。。。。待续。。。
发表于:2007-12-26 09:00:442楼 得分:0
  //弹起事件
                                public   void   keyreleased(keyevent   ke){
                                                //从键盘读入数字
                                                if(ke.getkeychar()=='0'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("0");
                                                                else   text.settext(text.gettext()+"0");
                                                                }
                                                if(ke.getkeychar()=='1'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("1");
                                                                else   text.settext(text.gettext()+"1");
                                                                }
                                                if(ke.getkeychar()=='2'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("2");
                                                                else   text.settext(text.gettext()+"2");
                                                                }
                                                if(ke.getkeychar()=='3'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("3");
                                                                else   text.settext(text.gettext()+"3");
                                                                }
                                                if(ke.getkeychar()=='4'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("4");
                                                                else   text.settext(text.gettext()+"4");
                                                                }
                                                if(ke.getkeychar()=='5'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("5");
                                                                else   text.settext(text.gettext()+"5");
                                                                }
                                                if(ke.getkeychar()=='6'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("6");
                                                                else   text.settext(text.gettext()+"6");
                                                                }
                                                if(ke.getkeychar()=='7'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("7");
                                                                else   text.settext(text.gettext()+"7");
                                                                }
                                                if(ke.getkeychar()=='8'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("8");
                                                                else   text.settext(text.gettext()+"8");
                                                                }
                                                if(ke.getkeychar()=='9'){
                                                                if(text.gettext().equals("0"))
                                                                                text.settext("9");
                                                                else   text.settext(text.gettext()+"9");
                                                                }
                                                               
                                                //从键盘输入小数点                
                                                if(ke.getkeychar()=='.')
                                                                text.settext(text.gettext()+".");
                                                               
                                                //加法
                                                if(ke.getkeychar()=='+'){
                                                                num1=float.parsefloat(text.gettext());
                                                                ysf2='+';
                                                                text.settext("");
                                                                }
                                                               
                                                //减法
                                                if(ke.getkeychar()=='-'){
                                                                num1=float.parsefloat(text.gettext());
                                                                ysf2='-';
                                                                text.settext("");
                                                                }
                                                               
                                                //乘法
                                                if(ke.getkeychar()=='*'){
                                                                num1=float.parsefloat(text.gettext());
                                                                ysf2='*';
                                                                text.settext("");
                                                                }
                                                               
                                                //除法
                                                if(ke.getkeychar()=='/'){
                                                                num1=float.parsefloat(text.gettext());
                                                                ysf2='/';
                                                                text.settext("");
                                                                }
                                                }
                                public   void   keytyped(keyevent   ke){
                                               
                                                }
                                }
                public   static   void   main(string   args[]){
                                jisuanqi   jsq=new   jisuanqi();
                                }
                }
以上的题做了一半,做不下去了,思想是要使键盘和鼠标都实现,而且键盘的“sqrt”是用zlt+s实现的
发表于:2007-12-26 09:15:243楼 得分:0
代码好长~~~顶下
发表于:2007-12-26 09:39:474楼 得分:0
这是实现计算器的代码
发表于:2007-12-27 12:55:595楼 得分:0
“以上的题做了一半,做不下去了,”

“做不下去”的障碍在哪里?
这个程序的思路无非是鼠标事件和键盘事件的处理,你要同时实现两个,请记住这两个要分开,不要混淆到一起,经常有人犯这种错误。
鼠标事件源是每一个按钮,当你在该按钮上点击,即触发事件,在文本框里显示该按钮的数字;
键盘事件源是程序主窗口本身,只要焦点在主窗口上,则按某个键,即触发键盘事件,在文本框里显示该键盘的数字;至于alt+s,那是组合键的定义而已,教材上都有清晰的介绍的。