设计题目一:设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。
本题目设计的方法是通过: 
  
鼠标单击进行各种输入----通过单击各种数字按钮输入整数;通过单击运算符号按钮输入算术运算;通过单击计算器面板上包含=号,按钮输入等号,以及通过单击CE按钮清除输入。 
  
 
程序输出 
---- 
面板输出结果或者输出错误信息(系统出错误时)。
//王睿的MyCalculator
import java.awt.*; 
    import java.awt.event.*; 
    
  
    
public class MyCalculator extends WindowAdapter implements ActionListener{ 
    
   private Frame f; 
    
   private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12, 
    
b13,b14,b15,b16,b17,b18,b19; 
    
   private TextField f1; 
    
   
   private double ans = 0;//临时存放结果,结果最后给final 
    
   private double n1=0;//定义为存放要输入的数字,初值为没有输入数字 
    
   private int op=0;//初值为没选择任何运算 
    
   private boolean hasop=false;//初值为没有按下运算符号 
    
   private boolean dot=false;//定义为运算中小数运算,初值为无小数 
    
  
    
   public static void main(String args[]){ 
    
        MyCalculator be=new MyCalculator(); 
    
        be.go(); 
    
   } 
    
   public void go(){ 
    
      f=new Frame("王睿的计算器"); 
    
      
f.setLayout(new GridLayout(4,4)); 
    
f1=new TextField("",10); 
    
      b1=new Button("1"); 
    
      b2=new Button("2"); 
    
      b3=new Button("3"); 
    
      b4=new Button("CE"); 
    
      b5=new Button("4"); 
    
      b6=new Button("5"); 
    
      b7=new Button("6"); 
    
      b8=new Button("+"); 
    
      b9=new Button("7"); 
    
      b10=new Button("8"); 
    
b11=new Button("9"); 
    
b12=new Button("-"); 
    
      b13=new Button("*"); 
    
      b14=new Button("0"); 
    
      b15=new Button("."); 
    
      b16=new Button("/"); 
    
      b17=new Button("="); 
    
      b18=new Button("("); 
    
      b19=new Button(")"); 
    
  
    
      f.add(f1); 
    
      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.pack(); 
    
      f.setVisible(true); 
    
  
    
      f.add(f1,"Center"); 
    
 
      f.addWindowListener(this); 
    
      f.setSize(300,150); 
    
      f.setVisible(true); 
    
   } 
    
   //实现ActionListener接口中的actionPerformed()方法 
    
   public void actionPerformed(ActionEvent e){ 
    
                String d = e.getActionCommand(); 
    
        char c = d.charAt(0); 
    
        
        switch(c) 
    
        { 
    
        case '+'://首次按下运算符号且在其之前 
    
        case '-'://没有数字按下且没有连按两次 
    
        case '*': 
    
        case '/'://则先把刚刚的结果计算出来 
    
            if (op!='0' && !hasOp) //按下等号 
    
                Result(); 
    
                n1 = Double.valueOf(final.getText()).doubleValue(); 
    
                    op = c; 
    
                    hasOp = true; 
    
                dot = false; 
    
            break; 
    
        case '=': //按下等号 
    
            Result(); 
    
            break; 
    
        case '.': //按下小数点 
    
            if ( !dot ) 
    
            { 
    
            final.setText(final.getText()+"."); 
    
            dot = true; 
    
            } 
    
            break; 
    
        case 'CE': //按下清除 
    
            n1 = 0; 
    
            op = '0'; 
    
            hasOp = false; 
    
            dot = false; 
    
            final.setText("0"); 
    
            break; 
    
            default: //按下数字正常执行 
    
                       if (final.getText().equals("0") || hasOp) 
    
                   { 
    
                final.setText(d); 
    
                hasop = false; 
    
                    } 
    
                    else 
    
                final.setText(final.getText()+d); 
    
        } 
    
    } 
    
  
    
       //计算结果 
    
       private void Result() 
    
    { 
    
        double n2 = Double.valueOf(final.getText()).doubleValue(); 
    
    
        switch (op) 
    
        { 
    
             case '+': 
    
            ans = n1 + n2; 
    
            break; 
    
             case '-': 
    
            ans = n1 - n2; 
    
            break; 
    
             case '*': 
    
            ans = n1 * 2; 
    
            break; 
    
             case '/': 
    
            ans = n1 / n2; 
    
            } 
    
    
        op = '0'; 
    
        hasOp = true; 
    
        dot = false; 
    
        n1 = ans; 
    
        final.setText(String.valueOf(ans)); 
    
    } 
    
       
       //覆盖WindowAdapter类中的 windowClosing()方法 
    
       public void windowClosing(WindowEvent e){ 
    
                System.exit(0); 
    
        } 
    
}