import java.awt.*;
import java.awt.event.*;     
class Computer  extends Frame {

Panel b=new Panel();

    Panel h=new Panel();

    TextField t=new TextField("",30);
    
private String name[]={"0","1","2","3","4","5","6","7","8","9","+","-","*","/","=","CE"};
        private Button button[]=new Button[name.length];


      public   Computer(){
      
      
b.setLayout(new GridLayout(4,3,3,3));
for (int i=0;i<name.length;i++){
            button[i]=new Button(name[i]);
             b.add(name[i],button[i]);
            
             
   }
    
      
   Frame f=new Frame("计算器");
   f.setLayout(new GridLayout(2,1));
   h.add(t);
   f.add(h);
   f.add(b);
   
   f.pack();
   f.setVisible(true);
   
   f.addWindowListener(new WindowAdapter(){
 
 
    public void windowClosing(WindowEvent e){
    
      System.exit(0);
    
     }
 
  });
 
 }
    
     
public static void main(String []args){


Computer m=new Computer();


}

}
我写了个关于计算器的程序.可是要怎么添加监听就可以把键盘的数字输入到文本框里????

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    public class My_Cal
    {
     public static void main(String arg[])
      {
       My_Frame1 mc1=new My_Frame1();
       mc1.addWindowListener(new WindowAdapter()
       {public void windowClosing(WindowEvent e){System.exit(0);}});
       }
    }
    class My_Frame1 extends Frame
    {  
       
       static String a=new String("");
       static String b=new String("");
       static String c=new String("");
       Panel p1=new Panel();
       TextField t1=new TextField("",20);
      // b1.setLabel("adf");
       Button b1[]=new Button[10];
       Button b2[]={new Button("+"),new Button("-"),new Button("*"),new Button("/"),new Button("=")};
       Menu menu1=new Menu("编辑");
       Menu menu2=new Menu("设置");
       Menu menu3=new Menu("帮助");
       MenuBar mb1=new MenuBar();
       MenuItem mi11=new MenuItem("复制");
       MenuItem mi12=new MenuItem("粘贴");
       MenuItem mi21=new MenuItem("color");
       MenuItem mi31=new MenuItem("帮助主题");
       MenuItem mi32=new MenuItem("关于");
       My_Frame1()
      { 
        mb1.add(menu1);
        mb1.add(menu2);
        mb1.add(menu3);
        menu1.add(mi11);
        menu1.add(mi12);
        menu2.add(mi21);
        menu3.add(mi31);
        menu3.add(mi32);
        this.setTitle("我的计算器");
        this.setLayout(new BorderLayout());
        p1.setLayout(new GridLayout(4,4,5,5));
        for(int j=0;j<4;j++)
        {
         p1.add(b2[j]);
         b2[j].addActionListener(new A_mycal());
         
        }
        for(int i=0;i<10;i++)
        {
         b1[i]=new Button(" "+i);
         p1.add(b1[i]);
         b1[i].addActionListener(new A_mycal());
         }
        p1.add(b2[4]);
        b2[4].addActionListener(new A_mycal());
       // b1[1].setBounds(10,10,40,25);
        this.setMenuBar(mb1);
        this.add(t1,BorderLayout.NORTH);
        this.add(p1,BorderLayout.CENTER);
        this.setBounds(350,300,200,200);
        this.setResizable(false);
        this.setVisible(true);
      }
      class A_mycal implements ActionListener
      {
       public void actionPerformed(ActionEvent e)
        {
        
         Object o1=e.getSource();
         for(int i=0;i<10;i++)
          if(o1==b1[i])
          {
          // a=a+b1[i].getLabel();
           a=a+i;
           t1.setText(a);
           break;
          }
         for(int j=0;j<4;j++)
         if(o1==b2[j])
          {
           t1.setText("");
           b=a;
           a="";
           c=b2[j].getLabel();
           break;
          }
         if(o1==b2[4])
         { if(a.equals(""))
             a="0";
           if(b.equals(""))
             b="0";
          if(c.equals("+"))
          {
           int r=Integer.parseInt(b)+Integer.parseInt(a);
           t1.setText(""+r);
           a="";
            b="";
          }
         if(c.equals("-"))
          {int r=Integer.parseInt(b)-Integer.parseInt(a);
           t1.setText(""+r);
           a="";
            b="";}
          if(c.equals("*"))
          {int r=Integer.parseInt(b)*Integer.parseInt(a);
           t1.setText(""+r);
           a="";
           b="";}
           if(c.equals("/"))
          {if(a.equals("0"))
            t1.setText("分母不能为0");
           else
            {
             int r=Integer.parseInt(b)/Integer.parseInt(a);
             t1.setText(""+r);
             
            }
             a="";
             b="";
             
          }
         
         }
         
         
        } 
       }
    }
      

  2.   

    这是我用SWING做的计算器,这个是监听和计算的部分
    说明一下,display是JTextField类型的文本框 public void actionPerformed(ActionEvent evt){
    String s=evt.getActionCommand();
    if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals(".")){
    if(start) display.setText(s);
    else display.setText(display.getText()+s);
    start=false;
    }
    else{
    if(start){
    if(s.equals("-")){
    display.setText(s);
    start=false;
    }
    else op=s;
    }
    else{
    double x=Double.parseDouble(display.getText());
    calculate(x);
    op=s;
    start=true;
    }
    }
    }

    public void calculate(double n){
    if(op.equals("+")) arg +=n;
    else if(op.equals("-")) arg -=n;
    else if(op.equals("*")) arg *=n;
    else if(op.equals("/")) arg /=n;
    else if(op.equals("=")) arg =n;
    display.setText(""+arg);
      

  3.   

    对了,要实现监听类要多后面几个词!
    class CalculatorPanel extends JPanel implements ActionListener
      

  4.   

    要实现监听必须实现相应的监听接口!
    implements一下你所需要的接口
      

  5.   

    我也是初学者啊,上个礼拜刚好教到AWT和SWING组件,实验也是写计算器,呵呵!