Key Listener 在 JApplet 中不起作用

Key Listener not working in JApplet

这是一款打破砖块类型的游戏,用户不能让球落到球拍下方。顺便说一下,paddle_x 是设置球拍的 x 坐标。我有一个效果很好的 MouseListener,但是 KeyListener 却不行。我想知道我做错了什么,如果有人有任何建议。

public PaintSurface() {
    addMouseMotionListener(new MouseMotionAdapter() 
    {
        public void mouseMoved(MouseEvent e)
        {
            if (e.getX() - 30 - paddle_x > 5)
                english  = 1.5f;
            else if(e.getX() - 30 - paddle_x < -5)
                english = - 1.5f;
            else
                english = 1.0f;
            paddle_x = e.getX() - 30;
        }
    });
    addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub
            if(e.getID() == KeyEvent.KEY_TYPED){
                if(e.getKeyChar() == KeyEvent.VK_RIGHT){
                    paddle_x += 30;
                }
                else if (e.getKeyChar() == KeyEvent.VK_LEFT){
                    paddle_x -= 30;
                }
            }
        }
    });


    ball = new Ball(20);

}

已注册 KeyListener 的组件必须具有 focus 才能触发 KeyListener。在组件上调用 requestFocus 以请求组件具有焦点,或使用 KeyBindings(推荐)

此外,keyPressed 方法有一个条件检查 ID 与 KeyEvent.KEY_TYPED 事件(永远不会发生)。