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