Java KeyListener未激活
我找不到我的代码中有什么错误。。。我试图通过输入sysouts进行调试,但似乎是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);
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
smousePressed
事件来调用它,因为这种方法只是一种黑客攻击,小程序已经死了,它们已经被正式弃用,不再受支持-是时候移动了on@MadProgrammer “小程序也需要在浏览器中具有焦点,这是您无法控制的”LOL!告诉我。如果一个网页包含两个小程序和其他可聚焦元素,那么焦点是否会转到小程序或网页元素,以及如果是小程序,是哪一个(在HTML中第一个,首先加载,最后加载…).真高兴小程序死了。@AndrewThompson试图从浏览器中窃取焦点