Java Ereignissteuerung

Werbung
Java Ereignissteuerung
Fragen
Layout-Manager
z
FlowLayout
z
BorderLayout
z
GridLayout
Setzen des Layout-Managers:
setLayout(new LayoutManager());
Beispiel Layout.java
Event Handling
z
z
z
Wie kann auf das Verhalten des Benutzers
reagiert werden?
Also z.B es soll ein Text beim drücken von
Button1 angezeigt werden.
Lösung: Event Handling
Event Handling
z
Was ist überhaupt ein Event?
Benutzer interagiert mit (meist grafischer)
Komponente z.B. drückt einen Button,
verschiebt einen Regler, ändert Fenstergröße,
bewegt die Maus, drückt eine Taste, usw.
Event Handling
z
Wie registriert Java ein Event?
Zu jedem Event gibt es einen Listener, der an
der Ereignisquelle horcht.
Will man über ein bestimmtes Event
informiert werden, muß man dem Objekt (z.B.
Button) den entsprechenden Listener
hinzufügen.
Der Listener selbst ist eine Schnittstelle, die
implementiert werden muß.
Event Handling
Java Event Handling – Prinzip
WindowListener
MouseListener
1. Betriebssystem sendet ein Ereignis
(Mausklick links, Enter-Taste, Fenster
schließen...) an die aktuell fokussierte
Anwendung (unser Java-Programm)
2. Anwendung sendet das Ereignis
an die betroffene Komponente weiter
(Button, MenuBar, ...)
3. Komponente informiert alle
registrierten Listener über das
Ereignis
KeyListener
Die Listener-Klassen einer
Komponente fangen Events
auf und reagieren auf sie
Event Handling
Empfang und Bearbeitung von Ereignissen
z Implementieren des XXXListenerInterfaces
(java.awt.event)
z Erzeugen des XXXListener Objekts
z Registrieren des XXXListener Objekts zum Ereignis
XXXEvent bei der Komponente, die das Ereignis
erzeugt, mittels addXXXListener
z.B. Button1.addActionListener(ActionListener1);
z Registrierung aufheben mit removeXXXListener
Klassen von AWT Event
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
AWTEvent (abstrakt)
ActionEvent
AdjustmentEvent
ComponentEvent
ContainerEvent
FocusEvent
InputEvent
MouseEvent
KeyEvent
WindowsEvent
ItemEvent
TextEvent
EREIGNIS KOMPONENTE
ActionEvent: Button, List, MenuItem, TextField
ItemEvent Checkbox, Choice, List
AdjustmentEvent Scrollbar
Implementierung
Interface
class Mausbearbeiter implements MouseListener {
public void mousePressed(MouseEvent e){
... // reagiere Auf Event
}
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(NouseEvent e) { }
public void mouseExited(MouseEvent e) { }
}
Nachteil: Alle Methoden des Listeners müssen explizit implementiert
werden
Tip: Am besten als eingebettete Klasse realisieren
Adapter-Klassen
Adapterklasse
Class Mausbearbeiter extends MouseAdapter() {
public void mousePressed (MouseEvent e) {
... // reagiere auf Event
}
Vorteil:
Da Adapterklassen bereits Interfaces mit allen Methoden und leeren
Rümpfen
implementieren, müssen jetzt nicht mehr alle Methoden nochmal
implementiert werden
Nachteil:
Nur einfach-Vererbung möglich
Interface und Adapter Klassen
Beispiele
z
z
Aktion.java mit Hilfe eines Interfaces
Maus.java mit Hilfe einer Adapter-Klasse
Übungsaufgaben
z
z
Siehe www.uni-koblenz.de/~sebath Aufgaben
Lösungen zu den Aufgabe nach der
Veranstaltung auch auf der Seite
Probeklausur von 2004
Herunterladen