Wie kann ich bei Java eine gedrückte taste abfragen?
Ich habe eine frage... Wie kann ich bei Java Testen abfragen ??? Gedacht : if (Keyboard.isKeyDown(Keyboard.KEY_A)) { System.out.print("Hallo"); } Aber leider ist Keyboard falsch... Kennt wer eine leichte und nicht lange Methode die funktioniert ???
3 Antworten
Ich glaube, das eigentliche Problem in deinem Programm ist ein strukturelles, es liegt weniger an der Methode.
Folgendes: wenn du dein Programm so schreibst, wie du es vorgeschlagen hast, wird es in der Millisekunde, in der es bei dieser Codezeile angelangt bist, das abprüfen.
Im Normalfall braucht man jedoch etwas ganz anderes: Sobald (nicht wenn) eine bestimmte Taste gedrückt ist, soll etwas geschehen. Und dafür brauchst du keinen Test à la isDown() sondern einen KeyListener. (Es gibt anscheinend noch einen weiteren Spezialfall, für den findest du hier mehr: https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)
Den fügst du wie einen normalen Listener einer Component hinzu (im Normalfall nimmt man das Fenster und alles, was darin ist (einzeln!)), und wenn die Taste gedrückt ist, während diese Komponente angewählt ist, wird die actionPerformed()-Methode des Listeners aufgerufen.
Beispielcode zum Hinzufügen des Listeners:
JFrame meinFenster = new JFrame("toller Titel");
meinFenster.add(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {
// das, was bei Tastendruck passieren soll
}
});
So in etwa.
Stichwort:
Key Listener
https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
MFG xGlumi
Du kannst ohne native Bibliotheken lediglich Tastendrücke in GUI-Komponenten abfragen.
Für globale Tastenanschläge kann ich die Bibliothek JNativeHook empfehlen. Ist auch sehr einfach zu benutzen.
https://github.com/kwhat/jnativehook