javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Calculator2 extends Frame implements ActionListener {
Frame frame;
Panel panel;
TextField t;
Button[] button;
    StringBuffer str;
    double x, y;
    int z;
     Calculator2()
     {
       frame=new Frame();
      frame.setLayout(new BorderLayout());
         MenuBar mb=new MenuBar();
         Menu menu1=new Menu("编辑(E)");
         Menu menu2=new Menu("查看(v)");
         Menu menu3=new Menu("帮助(H)");
         MenuItem mi1=new MenuItem("复制(C) Ctrl+C ");
         MenuItem mi2=new MenuItem("粘贴(V) Ctrl+V ");
         MenuItem mi3=new MenuItem("标准型(T)  ");
         MenuItem mi4=new MenuItem("科学型(S)  ");
         MenuItem mi5=new MenuItem("数据分组(I)  ");
         MenuItem mi6=new MenuItem("帮助主题(H)  ");
         MenuItem mi7=new MenuItem("关于计算器(A)  ");      
         String s[]={"My","love","退格","CE","C","7","8","9","+/-","sqrt","4","5","6","/","%","1","2","3","-","0","*","1/x",".","+","="};
         button=new Button[s.length];
         panel=new Panel();
         panel.setLayout(new GridLayout(5,5));
         t=new TextField("0",27);
         t.setEnabled(false); 
         for(int i=0;i<button.length;i++)
          {
        button[i]=new Button(s[i]);
        button[i].setForeground(Color.blue);
        panel.add(button[i]);
          }   
           for(int i=2;i<button.length;i++)
            {
               button[i].addActionListener(this);
            }
            
         mb.add(menu1);
            mb.add(menu2);
            mb.add(menu3);
            mb.add(menu1);
            mb.add(menu2);
            mb.add(menu3);
            menu1.add(mi1);
            menu1.add(mi2);
            menu2.add(mi3);
            menu2.add(mi4);
            menu2.add(mi5);
            menu3.add(mi6);
            menu3.add(mi7); 
            frame.setMenuBar(mb);
            frame.setBounds(300,300,260,370);
            frame.add(t,BorderLayout.NORTH);
            frame.add(panel,BorderLayout.CENTER);
            frame.setBackground(Color.blue);
            frame.setVisible(true);
            setResizable(false);
            frame.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e1) { 
            System.exit(0); 
              } 
              }); 
     
     }
            public void actionPerformed(ActionEvent e2) 
          {      
       try{
            if(e2.getSource()==button[3])
             {
             t.setText("0");
             str.setLength(0);
             }  
          
            else if(e2.getSource()==button[4])
              { 
               t.setText("0");
               str.setLength(0); 
               }   
             else if(e2.getSource()==button[8])
               { 
                x=Double.parseDouble(t.getText().trim()); 
                t.setText(""+(-x)); 
              } 
               else if(e2.getSource()==button[23])
                { 
                   x=Double.parseDouble(t.getText().trim()); 
                   str.setLength(0); 
                   y=0d; 
                   z=0; 
                 } 
                 else if(e2.getSource()==button[17])
                    { 
                         x=Double.parseDouble(t.getText().trim()); 
                         str.setLength(0); 
                         y=0d; 
                         z=1; 
                     } 
                 else if(e2.getSource()==button[2])
                     { 
                         x=Double.parseDouble(t.getText().trim()); 
                         str.setLength(0); 
                         y=0d; 
                         z=1; 
                     } 
                 else if(e2.getSource()==button[13])
                      { 
                         x=Double.parseDouble(t.getText().trim()); 
                         str.setLength(0); 
                         y=0d; 
                         z=1; 
                     } 
                else if(e2.getSource()==button[24])
                         { 
                     str.setLength(0); 
                           switch(z) 
                         { 
                       case 0 : t.setText(""+(x+y));break; 
                       case 1 : t.setText(""+(x-y));break; 
                       case 2 : t.setText(""+(x*y));break; 
                       case 3 : t.setText(""+(x/y));break; 
                          } 
                          }
                 else if(e2.getSource()==button[22])
                          { 
                     if(t.getText().trim().indexOf('.')!=-1)
                          {                          } 
                  else
                { 
                     if(t.getText().trim().equals("0")) 
                { 
                        str.setLength(0); 
                    t.setText((str.append("0"+e2.getActionCommand())).toString()); 
               } 
                  else if(t.getText().trim().equals(""))
                  { 
                  } 
                   else 
                  {
               t.setText(str.append(e2.getActionCommand()).toString()); 
                   } 
                   } 
                        y=0d;
                  }
              else if(e2.getSource()==button[9])
                  { 
               x=Double.parseDouble(t.getText().trim()); 
                 t.setText("数字格式异常"); 
                     if(x<0) 
                     t.setText("负数没有平方根"); 
                      else 
                t.setText(""+Math.sqrt(x)); 
                 str.setLength(0); 
                   y=0d; 
                    } 
           else if(e2.getSource()==button[14]) 
                    { 
              x=Double.parseDouble(t.getText().trim()); 
                  t.setText(""+(0.01*x)); 
                  str.setLength(0); 
                  y=0d; 
                  } 
               else if(e2.getSource()==button[21])
                  {            x=Double.parseDouble(t.getText().trim()); 
                  if(x==0) 
                  {
            t.setText("除数不能为零"); 
                 }
                 else 
                  { 
             t.setText(""+(1/x)); 
                  } 
             str.setLength(0); 
                y=0d; 
                   } 
                 else
              { 
             if(e2.getSource()==button[18])
              { 
              if(t.getText().trim().equals("0"))
               {                 } 
               else 
          { 
         t.setText(str.append(e2.getActionCommand()).toString()); 
              y=Double.parseDouble(t.getText().trim()); 
            } 
            } 
        else if(e2.getSource()==button[2])
            { 
            if(!t.getText().trim().equals("0"))
             { 
         if(str.length()!=1) 
            { 
   t.setText(str.delete(str.length()-1,str.length()).toString());
           } 
            else 
           { 
                 t.setText("0"); 
              str.setLength(0); 
           }
           }
                  y=Double.parseDouble(t.getText().trim()); 
             } 
                 else
                 { 
                  t.setText(str.append(e2.getActionCommand()).toString()); 
                    y=Double.parseDouble(t.getText().trim()); 
                        }
                        }
                 
                        }          
    
                        catch(NumberFormatException e){ 
                          t.setText("数字格式异常"); 
                       } 
                 catch(StringIndexOutOfBoundsException e){ 
                         t.setText("字符串索引越界"); 
                         } 
                       } 
             public static void main(String[] args) {
          Calculator2 c=new Calculator2();
        
   }
}