in Java Sie überprüfen nicht, ob eine Taste gedrückt ist, können Sie stattdessen hören bis KeyEvent
s. Der richtige Weg, um Ihr Ziel zu erreichen, ist eine KeyEventDispatcher
, registrieren und implementieren sie den Zustand des gewünschten Schlüssel zu erhalten:
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
public class IsKeyPressed {
private static volatile boolean wPressed = false;
public static boolean isWPressed() {
synchronized (IsKeyPressed.class) {
return wPressed;
}
}
public static void main(String[] args) {
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent ke) {
synchronized (IsKeyPressed.class) {
switch (ke.getID()) {
case KeyEvent.KEY_PRESSED:
if (ke.getKeyCode() == KeyEvent.VK_W) {
wPressed = true;
}
break;
case KeyEvent.KEY_RELEASED:
if (ke.getKeyCode() == KeyEvent.VK_W) {
wPressed = false;
}
break;
}
return false;
}
}
});
}
}
Dann können Sie immer wie folgt:
if (IsKeyPressed.isWPressed()) {
// do your thing.
}
Sie können, von Natürlich, verwenden Sie die gleiche Methode, um isPressing("<some key>")
mit einer Karte von Schlüsseln und ihren Zustand innerhalb IsKeyPressed
gewickelt zu implementieren.
Mögliche Duplikat http://stackoverflow.com/questions/616924/how-to-check-if-the-key-pressed-was-an-arrow- key-in-java-keylistener – woofmeow
In Java, aber mit einem bestimmten GUI-Framework (Swing?)? – mael