Java KeyListener未激活

Java KeyListener未激活,java,applet,awt,keylistener,Java,Applet,Awt,Keylistener,我找不到我的代码中有什么错误。。。我试图通过输入sysouts进行调试,但似乎是keylistener造成的。为什么它没有注册任何按键 public class Pong extends Applet implements Runnable, KeyListener { public void init() { this.resize(WIDTH, HEIGHT); this.addKeyListener(this); p1 = new HumanPaddle(1);

我找不到我的代码中有什么错误。。。我试图通过输入sysouts进行调试,但似乎是keylistener造成的。为什么它没有注册任何按键

public class Pong extends Applet implements Runnable, KeyListener {

public void init() {
    this.resize(WIDTH, HEIGHT);
    this.addKeyListener(this);

    p1 = new HumanPaddle(1);

    thread = new Thread(this);
    thread.start();
}

public void update(Graphics g) {
    paint(g);
}

public void keyPressed(KeyEvent e) {

    if(e.getKeyCode() == KeyEvent.VK_UP) {
        p1.setUpAccel(true);
    }
    if(e.getKeyCode() == KeyEvent.VK_DOWN) {
        p1.setDownAccel(true);
    }
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();

    if(key == KeyEvent.VK_UP) {
        p1.setUpAccel(false);
    }
    if(key == KeyEvent.VK_DOWN) {
        p1.setDownAccel(false);
    }
}

public void keyTyped(KeyEvent e) {

}
}

KeyListener
是一个令人痛苦的。。。代码。为了工作,它注册到的组件必须是可聚焦的,并且具有当前键盘焦点。如果您使用的是Swing,我们建议您使用键绑定API,这将有助于解决问题。由于您使用的是小程序,因此会出现其他问题,因为小程序也需要在浏览器中具有焦点,这是您无法控制的。请从使组件可聚焦开始-
setFocusable(true)
然后使用类似于
requestFocusInWindow
的方法尝试将键盘焦点绘制到组件上。我建议将它放在
start
方法中,并使用
MouseListener
s
mousePressed
事件来调用它,因为这种方法只是一种黑客攻击,小程序已经死了,它们已经被正式弃用,不再受支持-是时候移动了on@MadProgrammer “小程序也需要在浏览器中具有焦点,这是您无法控制的”LOL!告诉我。如果一个网页包含两个小程序和其他可聚焦元素,那么焦点是否会转到小程序或网页元素,以及如果是小程序,是哪一个(在HTML中第一个,首先加载,最后加载…).真高兴小程序死了。@AndrewThompson试图从浏览器中窃取焦点