我有一个实现 KeyListener
的类,一切正常,但有一个小问题,我的 KeyListener
仅在单击 Canvas 后才起作用,所以如果我开始一个游戏,我必须点击一次,然后我才能使用我的键盘,代码:
public class Game extends Canvas implements Runnable {
....
initGame() {
...
addKeyListener(new Keyboard());
setFocusable(true);
}
private class Keyboard implements KeyListener {
...
}
}
-有没有一种方法可以让我的 Canvas 在创建后“活跃”?
最佳答案
KeyListener
仅当其注册的组件可聚焦且具有焦点时才会响应按键事件。
虽然您可以使用 requestFocusInWindow
,但不能保证焦点将转移到组件,如果由于某种原因失去焦点(您单击另一个组件),那么您将回到第一个方向.
更好的解决方案是使用基于 JComoponet
的组件(如 JPanel
)并利用 Key Bindings API允许您定义触发关键事件的焦点级别
关于java - KeyListener 仅在单击 Canvas 后才激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724286/