我正在尝试使用JFrame
在Java中制作基本游戏。对于游戏,我需要检测是否按下了几个不同的键。我有这个在框架中添加KeyListener
:
KeyListener keyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
KEYS.put(e.getKeyCode(), true);
}
@Override
public void keyReleased(KeyEvent e) {
KEYS.put(e.getKeyCode(), false);
}
};
frame.addKeyListener(keyListener);
当我按住一两个键时,它工作正常。但是如果我在那之后按下任何更多的键,它就不会记录它。我目前正在使用KeyListener
来获取输入,但使用InputMap
和ActionMap
时遇到了同样的问题。为什么Java 有时只能处理一次持有的两个密钥?
当我在HashMap
按住按键时,我已经存储了,所以我可以看到它们是否被按下了。问题是,如果已经按下两个键,则永远不会调用keyPressed
方法。