import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame{
        static JTextField t=new JTextField("",20);
        public static void main(String args[]){
Calculator c=new Calculator();
}
public Calculator(){
    	   setTitle("");
   	   Container app=getContentPane();
   	   t.setHorizontalAlignment(JTextField.RIGHT);
app.add(t,BorderLayout.NORTH);
   	   operationPanel op=new operationPanel();
   	   app.add(op,BorderLayout.CENTER);
   	   numberPanel np=new numberPanel();
   	   app.add(np,BorderLayout.SOUTH);
   	   setResizable(false);
   	   pack();
   	   setVisible(true);
       }
}
class operationPanel extends JPanel{                //ɾ˸ť
public operationPanel(){
setLayout(new FlowLayout());
JButton b1=new JButton("cancel");
JButton b2=new JButton("clear");
b1.addActionListener(new ActionLis());
b2.addActionListener(new ActionLis());
add(b1);
add(b2);
}
}
class numberPanel extends JPanel{       //ֺͲ
String s[]={"0","1","2","3","4","5","6","7","8","9",".","+","-","*","/","="};
JButton b;
public numberPanel(){
setLayout(new GridLayout(4,4));
for (int i=0;i<=10;i++){                                       //֡С
b=new JButton(s[i]);
b.setActionCommand("number");
b.addActionListener(new ActionLis());
add(b);
}
for (int i=11;i<s.length-1;i++){                            //ǲ
b=new JButton(s[i]);
b.setActionCommand("caculate");
b.addActionListener(new ActionLis());
add(b);
}
b=new JButton("=");                                           //Ⱥ
b.setActionCommand("result");
b.addActionListener(new ActionLis());
add(b);
}
}
class ActionLis implements ActionListener{      //¼
static String ops;
static boolean f=false;                                                   //ʶǷΪһµĲΪtrueʱ
        static double a,b,c;
static String s,bText,text;
public void actionPerformed(ActionEvent e){
s=e.getActionCommand();      
bText=((JButton)e.getSource()).getText();
text=Calculator.t.getText();
if (s=="number"){          //֡Сʱ
if(f) {                                        //ʼһµĲ
Calculator.t.setText(bText);                     //ʾµ
f=false;                                                      //ñ־Ϊ
	           }
else Calculator.t.setText(text+bText);   //µĲıԭе
//Ӹհµ
}
if(s=="caculate"){           //µǲʱ
if(!text.equals("")){                  //ıΪգ˵²ȷ
ops=bText;                                              //¼µĲ
a=Double.parseDouble(text);                 //ıеתΪһ
f=true;                                                     //¿ʼһ
}
else if(bText=="-"){                //ıΪգҰµǡ-,˵µǸ
Calculator.t.setText(bText);                   //ʾı
}
}
if(s=="result"&&!text.equals("")){ //µǵȺŲıΪգ˵Ӧ
//
b=Double.parseDouble(text);                         //ıеתΪڶ
if(ops=="+") c=a+b;                                       //ΪӺţӷ
if(ops=="-") c=a-b;                                         //Ϊţ
if(ops=="*") c=a*b;                                        //Ϊ˺ţ˷
if(ops=="/") c=a/b;                                          //Ϊţ
Calculator.t.setText(String.valueOf(c));         //ʾı
f=true;                                                             //ʼһµĲ
}
if(s=="cancel"){                               //µ˸ťɾһ
Calculator.t.setText(text.substring(0,text.length()-1));
}
if(s=="clear"){                                //µɾťɾ
Calculator.t.setText("");
f=false;
}
}
}
