书上的java键盘事件源程序import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JFrame;
import javax.swing.JPanel;public class KeyEventDemo extends JFrame{
private Keyboardpanel p=new Keyboardpanel();
public KeyEventDemo(){
add(p);
p.setFocusable(true);
}
    static class Keyboardpanel extends JPanel{
     private int x=100;
     private int y=100;
        private char keychar='A';
        public Keyboardpanel(){
         addKeyListener(new KeyAdapter(){
         public void keyPressed(KeyEvent e){
         switch(e.getKeyCode()){
         case KeyEvent.VK_DOWN:y+=10;break;
         case KeyEvent.VK_UP:y-=10;break;
         case KeyEvent.VK_LEFT:x-=10;break;
         case KeyEvent.VK_RIGHT:x+=10;break;
         default: keychar=e.getKeyChar();
         }
         repaint();
         }
         });
        }
        protected void paintComponent(Graphics g){
         super.paintComponent(g);
         g.setFont(new Font("TimesRoman",Font.PLAIN,32));
         g.drawString(String.valueOf(keychar), x, y);
        }
    } public static void main(String[] args) {
     KeyEventDemo f=new KeyEventDemo();
     f.setTitle("KeyEvent");
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     f.setLocationRelativeTo(null);
     f.setSize(400, 300);
     f.setVisible(true);
}}运行了以后,一开始能响应键盘事件,但是当我将窗口变为非活动或者最小化后,几分钟以后再点开该程序,无论如何没的反映,无法响应键盘事件,需得重新run一遍源代码生成新窗口才行,望各路高人给点解释,不胜感激。