Java cooperation home
Tutorial
type and press Enter

Behandlung von Tastaturereignissen in Java 1.1 (Deprecated)

Achtung: Diese Art der Ereignissbehandlung ist in seit Java 1.2 als deprecated markiert und erzeugt beim Kompilieren eine Warnung / lässt sich mit 1.4 nicht kompilieren. Da aber viele noch Microsofts Internet Explorer 5 verwenden, dessen Virtual Maschine noch die JDK Version 1.1 verwendet ist diese Art der Ereignissbehandlung noch für viele Browser möglich und verwendbar. Solltet ihr aber mit euren Applets auf dem neusten Stand bleiben wollen, so verwendet bitte das in dem Kapitel neues Eventhandling beschriebene Verfahren. Dieses Kapitel ist allerdings ausführlicher so dass es vielleicht einige Dinge besser erklärt als das neue Kapitel!

Die Behandlung von Tastaturereignissen funktioniert auf ganz ähnliche Weise wie die zuvor behandelte Behandlung von Mausereignissen. Auch hier steht für jede mögliche Aktion eine Methode zur Verfügung, die nach der Implementierung auf die einzelnen Benutzereingaben hört und diese verarbeitet. Ich möchte diese Funktionen nun kurz vorstellen, um euch danach ein Applet zu zeigen, mit dem ihr unseren Ball mit Hilfe der Cursortasten nach links oder rechts bewegen und mit der Space Taste stoppen könnt. Achtung!! Tastatureingaben werden vom Applet erst dann behandelt, wenn es einmal angeklickt wurde!!
Nun aber zu den einzelnen Methoden:

  1. public boolean keyDown (Event e, int key): Diese Methode fängt das Ereigniss auf, das beim Drücken einer Taste entsteht.
  2. Dabei kann die gedrückte Taste mit der Variable key, die als Argument von der Methode übergeben wird, bestimmt werden. Die SpaceTaste hat z. B. den Wert 32. Wenn man sich nicht sicher ist, welchen Wert die Tasten haben, so kann man mit folgendem Ausdruck, den man in die keyDown (...) - Methode schreibt sich die Zahlenwerte auf die Standardausgabe schreiben lassen:

    System.out.println ("Charakter: " + (char)key + " Integer Value: " + key);

    Für manche, besonders häufig benutzte Werte existieren spezielle Variablen, so haben z. B. die Cursortasten die Werte Event.LEFT, Event.RIGHT, Event.UP, Event.DOWN. Diese Variablen sind alle Klassenvariablen der Klasse Event und können in der API nachgelesen werden.

  3. public boolean keyUp (Event e, int key): Diese Methode fängt das Ereigniss auf, das beim Loslassen einer Taste entsteht. Sie kann auf gleiche Weise wie die keyDown - Methode verwendet werden.

Wir wollen unser BallApplet nun also so modifizieren, dass sich der Ball nach Drücken der linken bzw. rechten Cursortaste in die angegebene Richtung bewegt. Drückt der Benutzer die Space - Taste so soll der Ball stoppen. Dazu müssen wir folgendes Programmstück in unser Applet einfügen:

    // Methode zur Behandlung von keyDown - Ereignissen
    public boolean keyDown (Event e, int key)
    {
      // Linke Cursortaste gedrückt
      if (key == Event.LEFT)
      {
        // Ändern des Richtunsvektors so dass sich der Ball nach Links bewegt (x - Position wird kleiner)
        x_speed = -1;
      }
      // Rechte Cursortaste gedrückt
      else if (key == Event.RIGHT)
      {
        // Ändern des Richtunsvektors so dass sich der Ball nach Rechts bewegt (x - Position wird grösser)
        x_speed = 1;
      }
      // Space Taste gedrückt (hat den Wert 32!)
      else if (key == 32)
      {
        // Stoppen des Balles (x_speed = 0)
        x_speed = 0;
      }
      else
      {
        /* Zusätzlich Ausgeben eines nicht behandelten Wertes auf die Standardausgabe (nicht nötig, sondern nur als Testmöglichkeit für euch!!) */
        System.out.println ("Charakter: " + (char)key + " Integer Value: " + key);
      }

      // NICHT VERGESSEN!!
      return true;
    }

Zusätzlich müsst ihr die run() - Methode noch ein wenig abändern, siehe dazu den Source Code zu diesem Kapitel!

Im Grunde beherscht ihr nun alle wichtigen Techniken, um ein Spiel zu programmieren. Ihr könnt Animationen realisieren, das Flackern der Bildes unterdrücken, Bilder / Sounds einfügen und Benutzerereignisse verarbeiten. Im nächsten Kapitel werde ich mit euch daher ein komplettes Spiel programmieren (das auch mein erstes selbstprogrammiertes Computerspiel war) und zwar so eine Art Moorhuhn (natürlich graphisch wesentlich einfacher, aber das Prinzip soll das selbe sein). Um dieses Spiel allerdings wirklich verstehen zu können, müsst ihr mit Klassen, Objekten, Aufrufen von Methoden anderer Klassen... vertraut sein und ihr müsst die vorigen Kapitel verstanden haben! Anhand dieses Spiels werdet ihr noch einige weitere Techniken lernen (Punkte zählen, Leben verlieren, Mauscursor verändern, ein Objekt abschießen, Bewegung in verschiedene, zufällige Richtungen...) und danach solltet ihr in der Lage sein selbstständig eure eigenen Spiele zu entwickeln. Viel Spaß also im folgenden Kapitel, zuvor könnt ihr euch noch das in dieser Lektion geleistete ansehen, bzw. den SourceCode runterladen.

SourceCode download
Applet ansehen

Nächstes Kapitel

Event handling mit EventListenern
Fabian Birzele, 2001-2004.
web-design: Vadim Murzagalin, 2004.