请教 这段程序 键盘监听 怎么无效?谢谢import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.*;public class TestKeyListener extends Applet implements KeyListener {
    int x=20;
    public void init() {
        addKeyListener(this);    
    }    
    public void paint(Graphics g){       
        //g.drawString("x is "+x,x,40)  ;  
        g.drawString("A",x,40)  ;         
        }    public void keyTyped(KeyEvent e) {        
        if(e.getKeyChar()=='r'||e.getKeyChar()=='R'){        
            x += 20;
        repaint();
        }         
    }    public void keyReleased( KeyEvent e ) {}
    public void keyPressed( KeyEvent e ) {}        
}
<applet code=TestKeyListener.class width=400 height=200>
</applet>

解决方案 »

  1.   

    给你个例子看下.import java.awt.*;
    import java.awt.event.*;public class Sample_11_5_2 extends Frame
      implements KeyListener {  String msg = "";
      int X = 20, Y = 50;   public Sample_11_5_2() {
        addKeyListener(this);
        requestFocus();     //请求获得输入焦点
      } //处理键盘按钮按下事件
      public void keyPressed(KeyEvent ke) {
        //msg="按下按键";
        //repaint();
      }  //处理键盘按钮松开事件
      public void keyReleased(KeyEvent ke) {
        //msg+=",松开按键";
        //repaint();
      }  //处理键盘字符按钮事件
    public void keyTyped(KeyEvent ke) {
        msg += ke.getKeyChar();
        repaint();
      }  // 显示记录信息
      public void paint(Graphics g) {
        g.drawString(msg, X, Y);
      }    
      
      public static void main(String[] args){
       Sample_11_5_2 s=new Sample_11_5_2();
       s.setSize(300,100);
       s.setVisible(true);
      }
    }
      

  2.   

    这段程序没有问题,主要是你没有让当前的光标焦点到你的Applet上,根据JAVA消息的机制,如果不是他的事件源,他是不会被回调消息的处理方法的.