Java cooperation home
Tutorial
type and press Enter

EventHandling mit der neuen Java - API

Nachdem ich immer wieder Mails bekommen habe, dass das von mir in den Beispielprogrammen verwendete und auch im Tutorial besprochene EventHandling beim Compilieren zu Fehlern bzw. Warnings führt habe ich mich nun doch entschlossen, das Ganze auf den neusten Stand zu bringen. Dennoch will ich die beiden ursprünglichen Kapitel zu Maus- und Keyboardereignissen weiterhin im Tutorial belassen, denn zum einen erklären sie bestimmte Teile vielleicht ausführlicher als es dieses Kapitel tun wird und zum anderen halte ich die von mir ursprünglich vorgestellte Methode gerade für Programmieranfänger für ein bischen einfacher zu verstehen.
In diesem Kapitel werde ich nun kurz auf die EventListener, die zum Auffangen von Benutzereingaben (Maus- und Keyboardereignisse) nötig sind eingehen, ohne diese jedoch im Detail zu besprechen. Dafür solltet ihr euch dann die JavaAPI vornehmen.

KeyListener

Um Keyboardereignisse abzufangen existiert im Package java.awt.event ein Interface namens KeyListener. Wenn ihr in eurem Applet auf Keyboardevents hören wollt, dann sollte eure Appletklasse genau dieses Interface implementieren, bzw. eine Klasse, die dieses Interface implementiert verwenden. Durch das Interface wird sichergestellt, das folgende Methoden von der Listenerklasse implementiert werden:

  • keyPressed(KeyEvent e): Key wird gedrückt
  • keyReleased(KeyEvent e): Key wird losgelassen
  • keyTyped(KeyEvent e): Key wurde gedrückt und wieder losgelassen

Um nun auf Keyevents zu hören, müsst ihr die Klasse, die das Interface KeyListener implementiert als KeyListener beim Applet registrieren. Das geschieht, indem ihr in der init() - Methode des Applets die Listenerklasse mit der addKeyListener(KeyListener listener) dem Applet als Keylistener hinzufügt. Implementiert das Applet selbst das Interface, so schreibt ihr einfach addKeyListener(this). Genauere Informationen, welcher Key gedrückt wurde... erhaltet ihr über das KeyEvent e, dass euch in der Methode mitgegeben wird. Beispiele dafür findet ihr im Beispielapplet zu diesem Kapitel.

Mausereignisse

Mausereignisse werden auf die gleiche Art und Weise gefangen und gehandelt. Allerdings gibt es hier zwei verschiedene Listernerklassen (ebenfalls im Package java.awt.event) nämlich den MouseListener und den MouseMotionListener. Beide müssen, soll das Applet auf Mausklick und Mausbewegungen hören dem Applet in gleicher Weise wie der KeyListener als Listener hinzugefügt werden. Allerdings gibt es hier die Methoden addMouseListener(MouseListener listener) und addMouseMotionListener(MouseMotionListener listener). Im Detail müssen folgende Methoden implementiert werden:

MouseListener

  • mouseClicked(MouseEvent e): Maus geklickt
  • mouseEntered(MouseEvent e): Maus kommt innerhalb des Applet Frames
  • mouseExited(MouseEvent e): Maus verlässt Applet Frame
  • mousePressed(MouseEvent e): Mausbutton ist gedrückt
  • mouseReleased(MouseEvent e): Mausbutton wird wieder losgelassen

MouseMotionListener

  • mouseMoved(MouseEvent e): Maus wird bewegt
  • mouseDragged(MouseEvent e): Maus wurde mit gedrücktem Button bewegt

Details über die MouseEvents und welche Daten man daraus gewinnen kann findet ihr im Beispielcode zu diesem Kapitel.
Ja, das wars auch schon wieder mit dem Schnelldurchlauf durch das etwas fortgeschrittenere Eventhandling. Ich hoffe, dass ich damit den etwas erfahreneren Programmierern unter euch etwas weiter helfen konnte und diejenigen, die noch nie etwas von Interfaces gehört haben nicht allzusehr verunsichert habe. Viel Spaß noch weiterhin und wie immer kommt hier noch das Beispielapplet und der Sourcecode.

SourceCode download
Applet ansehen

Nächstes Kapitel

Das erste Spiel
Fabian Birzele, 2001-2004.
web-design: Vadim Murzagalin, 2004.