如何在JFrame中检测到几个同时按下的键?

时间:2017-02-19 03:06:48

标签: java swing jframe

我正在尝试使用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来获取输入,但使用InputMapActionMap时遇到了同样的问题。为什么Java 有时只能处理一次持有的两个密钥?

当我在HashMap按住按键时,我已经存储了,所以我可以看到它们是否被按下了。问题是,如果已经按下两个键,则永远不会调用keyPressed方法。

0 个答案:

没有答案