Also wie ihr sicher wisst, muss man zum Empfangen von Events einen EventListener implementieren (implements %Eventname%Listener)
und diesen dann beim Eventerzeuger(z.B. JFrame) registrieren.
eventErzeuger.add%Eventname%Listener(my%Eventname%Listener);
Der Eventerzeuger ruft dann die Funktionen des EventListeners (bei euch KeyListener) mit einem EventObjekt (bei euch KeyEvent) auf.
z.B. void keyPressed(KeyEvent event);
Das EventObjekt(KeyEvent) beinhaltet weitere Informationen zum Ursprung des Events (z.B. welche Taste wurde gedrückt).
Wenn ihr einen KeyListener implementiert und registriert habt,
dann könnt ihr darin die gedrückten Tasten leicht abfragen.
Der gängige Weg das zu machen, ist entweder keyEvent.getKeyChar() oder
keyEvent.getKeyCode() abzufragen.
Ersteres liefert das entsprechende Zeichen der Taste als String, das zweite liefert eine int-Konstante für die Taste.
Die Konstanten gibts in KeyEvent mittels KeyEvent.VK_%Name%
Hier ein Code schnipsel aus einem KeyListener von einem 2D-Shooter den ich mal vor vielen Jahren geschrieben habe ^^ mit KeyCode-abfragen:
public void keyPressed(KeyEvent event) {
char keych = event.getKeyChar();
int keyco = event.getKeyCode();
if (keyco == KeyEvent.VK\_LEFT) {
sky.panzer1.moveBy(-25);
} else if (keyco == KeyEvent.VK\_RIGHT) {
sky.panzer1.moveBy(25);
} else if (keyco == KeyEvent.VK\_UP) {
sky.panzer1.fire();
} else if (keych == KeyEvent.VK\_1) {
sky.anfangen(false);
} else if (keych == KeyEvent.VK\_2) {
sky.anfangen(true);
} else if (keych == KeyEvent.VK\_3) {
sky.showDescription();
}
if (sky.twoPlayers) {
if (keyco == KeyEvent.VK\_A) {
sky.panzer2.moveBy(-20);
} else if (keyco == KeyEvent.VK\_D) {
sky.panzer2.moveBy(20);
} else if (keyco == KeyEvent.VK\_W) {
sky.panzer2.fire();
}
}
}
Noch fragen?
Gruß
VoidZer0