Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查键盘上的单个按键?_Java_Lwjgl - Fatal编程技术网

Java 如何检查键盘上的单个按键?

Java 如何检查键盘上的单个按键?,java,lwjgl,Java,Lwjgl,我想不出怎样才能使这个条件发挥作用。是否有类似于Keyboard.isKeyDown(//anykey)的条件 import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; public class InputHandler { public static boolean currentKeyState, previousKeyState; public static void update() {

我想不出怎样才能使这个条件发挥作用。是否有类似于Keyboard.isKeyDown(//anykey)的条件

import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;

public class InputHandler {

    public static boolean currentKeyState, previousKeyState;

    public static void update() {
        previousKeyState = currentKeyState;

        if (//condition for keydown) {
            currentKeyState = true;
         } else {
            currentKeyState = false;
        }
    }

    public static boolean keyReleased() {
       if (currentKeyState == true && previousKeyState == false) {
            return true;
       } else {
            return false;
        }
   }
}
这是我试图实现的C版本。Java中是否有类似于Keyboard.GetState()的方法


}

您可以为此使用java KeyEvent类

if (Keyboard.getEventKey() == Keyboard.KEY_A) {
    if (Keyboard.getEventKeyState()) {
        System.out.println("A Key Pressed");
    }
    else {
        System.out.println("A Key Released");
    }
}
你可以参考

用于获取所有输入法

有关支持的所有键,请参阅


}

我发现这是检查事件驱动输入的最简单方法:

while (Keyboard.next()) {
    if (Keyboard.getEventKeyState()) {
        switch (Keyboard.getEventKey()) {
            // case Keyboard.KEY_UP: /** do something here **/ break;
        }
    }
}

他要的是LWJGL。。。我怀疑java KeyEvent是否会起到关键作用。。。他们一定有自己的api更适合他们的需要(游戏)。但是我可以替换Keyboard.KEY_A来获得任何键盘输入吗?我已经编辑了我的答案,我对这个答案没有任何想法,但我仍然认为我可以提供一些东西!您的C#
IsPressed()
方法可以编写为
return(currentKeyState.IsKeyDown(键)和&previousKeyState.IsKeyUp(键))。Java中的所有其他方法也是如此。节省大量打字和空间;)
import org.lwjgl.input.Keyboard;

public class InputHandler {

public static boolean currentKeyState = true, previousKeyState;

public static void update() {
    previousKeyState = currentKeyState;

    if (Keyboard.getEventKeyState()) {
        currentKeyState = true;
    } else {
        previousKeyState = false;
    }
}

public static boolean keyPressed() {
    if (currentKeyState == true && previousKeyState == true) {
        return true;
    } else {
        return false;
    }
}
while (Keyboard.next()) {
    if (Keyboard.getEventKeyState()) {
        switch (Keyboard.getEventKey()) {
            // case Keyboard.KEY_UP: /** do something here **/ break;
        }
    }
}