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();          }                }     } }
   
 
  |