在多个线程/ KeyBinding中使用keyListeners

时间:2019-01-22 01:20:29

标签: java multithreading keylistener

我正在尝试制作一个非常简单的游戏,但它仍然可能需要同时获取8个按键。

使用keyListener,我可以花3-4左右的时间,这是我不希望的。

我不知道如何使用keyBinding,我认为它将解决我的问题。 (请不要仅仅放置此链接,我已经查看了它以及其他来源:https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html

我的第一个猜测是将线程添加到keyListener中,但是我不知道如何执行此操作,而对它进行查找并没有给我不错的答案。

private void makeKeyListeners() {
    f.addKeyListener(new KeyListener() {
        @Override
        public void keyTyped(KeyEvent e) {}

        @Override
        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();
            switch (key) {. . .}
        }

        @Override
        public void keyReleased(KeyEvent e) {
            int key = e.getKeyCode();
            switch (key) {. . .}
        }
    });
}

使用此功能时,我输入的信息不足(无法检测到同时按下8个键)

所以我的大问题是;如何一次从8个以上的按键中获取输入?

如果解决此问题的最佳方法是使用keyBindings,您能帮我一个忙,并深入解释它们吗?

1 个答案:

答案 0 :(得分:0)

这是硬件问题。我去了http://blog.controlspace.org/2010/08/n-key-rollover-what-it-is-and-how-to.html?m=1(MadProgrammer的评论),测试了我拥有的3种不同的键盘,它们的性能各不相同。