首页 > 解决方案 > 使用多线程的 keyListeners / KeyBinding

问题描述

我正在尝试制作一个非常简单的游戏,但它仍然可能需要同时使用大约 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,您能帮我一个忙并深入解释它们吗?

标签: javamultithreadingkeylistener

解决方案


这是一个硬件问题。我去了http://blog.controlspace.org/2010/08/n-key-rollover-what-it-is-and-how-to.html?m=1(MadProgrammer 的评论)并测试了 3 个不同的键盘我自己的,他们的表现都不同。


推荐阅读