Java 多次按键

标签 java key awt keypress keylistener

有没有一种简单的方法可以同时检查多个按键?我走路时使用:

    this.addKeyListener(new KeyAdapter() 
    {
        public void keyPressed(KeyEvent arg0)
        {
            if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
            {
                if (checkMovement(-1, user.getFalling()))
                {
                    user.move("left");
                }
            }
        }
    });

并且希望能够在移动时按住按钮来“冲刺”。我尝试使用另一个 KeyListener 检查另一个键,然后使用方法“user.sprint()”,但它无法同时识别两个按键。

有什么简单的方法可以检查按键是否按下?我确实有多个线程正在运行,我可以在线程中放置某种 if 语句来检查线程循环时是否按下它吗?

谢谢!

最佳答案

对于你的move键,你所做的一切都很好。

对于您的冲刺按钮,使用 KeyAdapter#keyPressed 记录何时按下该键,并使用 KeyAdapter#keyReleased 记录何时释放该键(存储它)例如,在 boolean 中)。

然后,当您的移动事件发生时,检查 boolean 值以查看您是在步行还是在冲刺。例如,这里有一个按键适配器,它记录当前按下了哪些按键。

Set<Integer> pressed = new HashSet<>();
this.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent arg0) {
            pressed.add(arg0.getKeyCode());
        }

        public void keyReleased(KeyEvent arg0) {
            pressed.remove(arg0.getKeyCode());
        }
    });
// if pressed.contains(keyCode), that key is currently being held

关于Java 多次按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747664/

相关文章:

java - 如何使用 java 在 postgreSQL 中存储 doc、jpeg、pdf 文件

java.util.Calendar getMaximum 最后一天返回错误

java - Hibernate 中的半正矢公式 - Spring

javascript - 无框架切换关键事件

json - JQ:如何根据正则表达式匹配替换键和值?

java - 鼠标点击监听器不触发

java - 在 Java 中实现 GridBagLayout 的问题

用于选择线条样式的 JavaFX 组合框

python - 使用 sqlalchemy 的复合键关系

java - 无法实例化 java 类