用了12个小时完成一个计算器小作业

类别:Java 点击:0 评论:0 推荐:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JTextField;
import java.awt.Color;

public class createFrame
{
    Frame f;
    JTextField text,text2;
    Button 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;
    double op1,op2,op2x,op3;//运算的三个数:op1,op2是运算数,op3是运算结果
    char op=0,opx=0,opp=0;//运算操作符
    boolean b=false;//我按过0键了,下次该按.了
    boolean c=false;//按过运算符了,下次按数字时该清屏显示
    boolean firstdeng=true;//第一次做=

    double mjia=0;


    public static void main(String[] args)
    {
        createFrame cf=new createFrame();
        cf.createWindow();
    }
   
    public void createWindow()
    {
        f = new Frame("calculator");
        f.setBackground(Color.LIGHT_GRAY);
       
        // 增加关闭事件的监听器
        this.shutwindow(f);

        text=new JTextField();
        text.setHorizontalAlignment(JTextField.RIGHT);
        text.setSize(250,22);
        text.setLocation(5,25);
        text.setEditable(false);
        text.setBackground(Color.WHITE);
        text.setText("0.");
       
        text2=new JTextField();
        text2.setHorizontalAlignment(JTextField.CENTER);
        text2.setSize(37,22);
        text2.setLocation(5,50);
        text2.setEditable(false);
        text2.setText("");
       
        text2.setBackground(Color.LIGHT_GRAY);
       
        b1 = new Button("BackSpace");
        b1.setSize(70,22);
        b1.setLocation(52,50);
       
        b2 = new Button("CE");
        b2.setSize(60,22);
        b2.setLocation(128,50);
       
        b3 = new Button("C");
        b3.setSize(60,22);
        b3.setLocation(194,50);
       
       
        b4 = new Button("MC");
        b4.setSize(37,22);
        b4.setLocation(5,75);
        b5 = new Button("7");
        b5.setSize(37,22);
        b5.setLocation(50,75);
        b6 = new Button("8");
        b6.setSize(37,22);
        b6.setLocation(93,75);
        b7 = new Button("9");
        b7.setSize(37,22);
        b7.setLocation(136,75);
        b8 = new Button("/");
        b8.setSize(37,22);
        b8.setLocation(179,75);
        b9 = new Button("sqrt");
        b9.setSize(37,22);
        b9.setLocation(218,75);
       
        b10 = new Button("MR");
        b10.setSize(37,22);
        b10.setLocation(5,100);
        b11 = new Button("4");
        b11.setSize(37,22);
        b11.setLocation(50,100);
        b12 = new Button("5");
        b12.setSize(37,22);
        b12.setLocation(93,100);
        b13 = new Button("6");
        b13.setSize(37,22);
        b13.setLocation(136,100);
        b14 = new Button("*");
        b14.setSize(37,22);
        b14.setLocation(179,100);
        b15 = new Button("%");
        b15.setSize(37,22);
        b15.setLocation(218,100);
       
        b16 = new Button("MS");
        b16.setSize(37,22);
        b16.setLocation(5,125);
        b17 = new Button("1");
        b17.setSize(37,22);
        b17.setLocation(50,125);
        b18 = new Button("2");
        b18.setSize(37,22);
        b18.setLocation(93,125);
        b19 = new Button("3");
        b19.setSize(37,22);
        b19.setLocation(136,125);
        b20 = new Button("-");
        b20.setSize(37,22);
        b20.setLocation(179,125);
        b21 = new Button("1/x");
        b21.setSize(37,22);
        b21.setLocation(218,125);
       
        b22 = new Button("M+");
        b22.setSize(37,22);
        b22.setLocation(5,150);
        b23 = new Button("0");
        b23.setSize(37,22);
        b23.setLocation(50,150);
        b24 = new Button("+/-");
        b24.setSize(37,22);
        b24.setLocation(93,150);
        b25 = new Button(".");
        b25.setSize(37,22);
        b25.setLocation(136,150);
        b26 = new Button("+");
        b26.setSize(37,22);
        b26.setLocation(179,150);
        b27 = new Button("=");
        b27.setSize(37,22);
        b27.setLocation(218,150);
       
        f.setLayout(null);       

        f.add(text);
        f.add(text2);
       
        b1.addActionListener(new ButtonHandler());
        b2.addActionListener(new ButtonHandler());
        b3.addActionListener(new ButtonHandler());
        b4.addActionListener(new ButtonHandler());
        b5.addActionListener(new ButtonHandler());
        b6.addActionListener(new ButtonHandler());
        b7.addActionListener(new ButtonHandler());
        b8.addActionListener(new ButtonHandler());
        b9.addActionListener(new ButtonHandler());
        b10.addActionListener(new ButtonHandler());
        b11.addActionListener(new ButtonHandler());
        b12.addActionListener(new ButtonHandler());
        b13.addActionListener(new ButtonHandler());
        b14.addActionListener(new ButtonHandler());
        b15.addActionListener(new ButtonHandler());
        b16.addActionListener(new ButtonHandler());
        b17.addActionListener(new ButtonHandler());
        b18.addActionListener(new ButtonHandler());
        b19.addActionListener(new ButtonHandler());
        b20.addActionListener(new ButtonHandler());
        b21.addActionListener(new ButtonHandler());
        b22.addActionListener(new ButtonHandler());
        b23.addActionListener(new ButtonHandler());
        b24.addActionListener(new ButtonHandler());
        b25.addActionListener(new ButtonHandler());
        b26.addActionListener(new ButtonHandler());
        b27.addActionListener(new ButtonHandler());

       
        f.add(b1);
        f.add(b2);
        f.add(b3);
       
        f.add(b4);
        f.add(b5);
        f.add(b6);
        f.add(b7);
        f.add(b8);
        f.add(b9);
       
        f.add(b10);
        f.add(b11);
        f.add(b12);
        f.add(b13);
        f.add(b14);
        f.add(b15);
       
        f.add(b16);
        f.add(b17);
        f.add(b18);
        f.add(b19);
        f.add(b20);
        f.add(b21);
       
        f.add(b22);
        f.add(b23);
        f.add(b24);
        f.add(b25);
        f.add(b26);
        f.add(b27);
     
     
        f.setResizable(false);
        f.setSize(260,180);
       
        //窗口居中显示      
        this.centershow(260,180,f);       
       
        f.setVisible(true);
       
    }
   
    public void centershow(int x,int y,Frame f)
    {
        //窗口居中显示
        Toolkit tk=Toolkit.getDefaultToolkit();
        Dimension d=tk.getScreenSize();
        int screenHeight=d.height;
        int screenWidth=d.width;
        f.setLocation((screenWidth-x)/2,(screenHeight-y)/2);
    }
   
    public void shutwindow(Frame f)
    {
        //Add a listener for the close event
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent evt)
            {           
                // 退出程序
                System.exit(0);
            }
        });
    }
   
    public double getCurrentNum()//得到当前文本框内数字
    {
       
        return 1;
    }
   
    //四则运算
    public double calculateNow(double op1,char op,double op2)
    {
        double op1b=0.0;
        switch(op)
        {
            case '+':
                op1b=op1+op2;
             break;
         case '-':
             op1b=op1-op2;
          break;
         case '*':
             op1b=op1*op2;
             break;
         case '/':
             if(op2==0.0)
                 op1b=op1;
             else
                 op1b=op1/op2;
             break;
         case '%':
             if(op2==0.0)
                 op1b=op1;
             else
                 op1b=op1%op2;
             break;
         case 0:
             op1b=op2;
             break;
        }
        return op1b;
    }
   
 
    class ButtonHandler implements ActionListener
    {
     public void actionPerformed(ActionEvent e)
        {
      System.out.println("Button's lable is :" + e.getActionCommand()+"||"
              +createFrame.this.op1
              +createFrame.this.op
              +createFrame.this.op2
              +"="
              +createFrame.this.op3);
      
         String command=e.getActionCommand();
         String currentText=text.getText();
         if(currentText.equals("函数输入无效.") || currentText.equals("除数不能为零."))
         {
             currentText="0.";
             text.setText(currentText);
         }
        
        
         if(command=="BackSpace")
         {
             if(currentText.length()>1)
                 currentText=currentText.substring(0,currentText.length()-1);
             else if(currentText.length()<=1)
             {
                 currentText="0.";                
             }
             text.setText(currentText);
         }
        
         if(command=="CE")
         {
             text.setText("0.");
             op2=0.0;
             //return;
         }
        
         if(command=="C")
         {
             text.setText("0.");
             op3=0.0;
             op1=0.0;
             op2=0.0;
             op2x=0.0;
             op=0;
             opx=0;
             opp=0;
             firstdeng=true;
             b=false;
             c=false;
           
         }
        
         if(command=="0")
         {
             if(text.getText().equals("0."))
             {
                 text.setText("0.");
                 b=true;
             }
             else
                 text.setText(currentText+"0");
         }
        
         if(command=="1")
         {
             if(c)
             {
                 c=false;
                 text.setText("1");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("1");
             else
                 text.setText(currentText+"1");
            
         }
        
         if(command=="2")
         {
             if(c)
             {
                 text.setText("2");
                 c=false;
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("2");
             else
                 text.setText(currentText+"2");
             //return;
         }
         if(command=="3")
         {
             if(c)
             {
                 c=false;
                 text.setText("3");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("3");
             else
                 text.setText(currentText+"3");
             //return;
         }
         if(command=="4")
         {
             if(c)
             {
                 c=false;
                 text.setText("4");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("4");
             else
                 text.setText(currentText+"4");
             //return;
         }
         if(command=="5")
         {
             if(c)
             {
                 c=false;
                 text.setText("5");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("5");
             else
                 text.setText(currentText+"5");
             //return;
         }
         if(command=="6")
         {
             if(c)
             {
                 c=false;
                 text.setText("6");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("6");
             else
                 text.setText(currentText+"6");
             //return;
         }
         if(command=="7")
         {
             if(c)
             {
                 c=false;
                 text.setText("7");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("7");
             else
                 text.setText(currentText+"7");
             //return;
         }
         if(command=="8")
         {
             if(c)
             {
                 c=false;
                 text.setText("8");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("8");
             else
                 text.setText(currentText+"8");
             //return;
         }
         if(command=="9")
         {
             if(c)
             {
                 c=false;
                 text.setText("9");
                 return;
             }
             if((text.getText().equals("0.") || text.getText().equals("0")) & !b)
                 text.setText("9");
             else
                 text.setText(currentText+"9");            
         }
        
         if(command=="/")
         {               
             op2=Double.valueOf(text.getText()).doubleValue();
             if(opp!='=')
             {
                 op1=calculateNow(op1,op,op2);
                 opp='/';
             }
             op='/';
             opx='/';
             text.setText(String.valueOf(op1));
             c=true;
             //b=false;
             firstdeng=true;
            

           }        
         if(command=="*")
         {
             op2=Double.valueOf(text.getText()).doubleValue(); 
             if(opp!='=')
             {
                 op1=calculateNow(op1,op,op2);
                 opp='*';
             }
             op='*';
             opx='*';
             text.setText(String.valueOf(op1));
             c=true;
             firstdeng=true;
            
         }             
         if(command=="-")
         {
           
             op2=Double.valueOf(text.getText()).doubleValue();
             if(opp!='=')
             {
                 op1=calculateNow(op1,op,op2);
                 opp='-';
             }
             op='-';
             opx='-';
             text.setText(String.valueOf(op1));
             c=true;
             firstdeng=true;
         }
         if(command=="+")
         {
             op2=Double.valueOf(text.getText()).doubleValue();
             if(opp!='=')
             {
                 op1=calculateNow(op1,op,op2);
                 opp='+';
             }
             op='+';
             opx='+';
             text.setText(String.valueOf(op1));
             c=true;
             firstdeng=true;
         }
        
         if(command==".")
         {
             if(text.getText().indexOf('.')>1)
                 return;
             else if(text.getText().indexOf('.')==-1)
             {
                 text.setText(currentText+".");
              b=true;
             }
             else if(text.getText().indexOf('.')==1)
                 b=true;
            
         }
        

         if(command=="+/-")
         {
             if(Double.valueOf(text.getText()).doubleValue()!=0)
             {
                 double d=-Double.valueOf(text.getText()).doubleValue();            
              text.setText(String.valueOf(d));
              op2=d;
              op2x=d;
             }
         }
        
         if(command=="%")
         {
             op2=Double.valueOf(text.getText()).doubleValue();
             if(op1!=0 & op2!=0)
             {
                 double temp=op1*op2;
                 temp=temp/100;
                 text.setText(String.valueOf(temp));
             }
                       
         }   
        
         if(command=="sqrt")
         {
             double in=Double.valueOf(text.getText()).doubleValue();
             if(in<0)
                 text.setText("函数输入无效.");
             else
             {
                 double sd=Math.sqrt(in);
                 text.setText(String.valueOf(sd));
                 op2=sd;
              op2x=sd;
             }

         }
        
         if(command=="1/x")
         {
             double in=Double.valueOf(text.getText()).doubleValue();
             if(in==0)
                 text.setText("除数不能为零.");
             else
             {
                 double sd=1/in;
                 text.setText(String.valueOf(sd));
                 op2=sd;
              op2x=sd;
             }
         }
        
         if(command=="=")
         {
             op2=Double.valueOf(text.getText()).doubleValue();
             System.out.println("=========="+op2);
             if(firstdeng)
             {
                 op2x=op2;
                 firstdeng=false;
             }            
             op1=calculateNow(op1,op,op2x);
             opp='=';
             text.setText(String.valueOf(op1));
         }
        
         if(command=="MC")
         {
             mjia=0;
             text2.setText("");
         }
         if(command=="MR")
         {
             text.setText(String.valueOf(mjia));
         }
         if(command=="MS")
         {
             mjia=Double.valueOf(text.getText()).doubleValue();
             text2.setText("M");
         }
         if(command=="M+")
         {
             mjia=mjia+Double.valueOf(text.getText()).doubleValue();
         }
        
     }

    }
}

本文地址:http://com.8s8s.com/it/it10238.htm