1. OOP in Java

Werbung
© 2004 Pohlig - Taulien
Ereignissteuerung
Swing
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
GK Informatik mit Java
2
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
Schaltfläche
„rot“
geklickt
GK Informatik mit Java
3
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
Schaltfläche
„grün“
geklickt
GK Informatik mit Java
4
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
Schaltfläche
„neutral“
geklickt
GK Informatik mit Java
5
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
GK Informatik mit Java
6
© 2004 Pohlig - Taulien
Auf Button-Klick reagieren
Programm beendet
GK Informatik mit Java
7
© 2004 Pohlig - Taulien
Delegation Event Model
Seit Java 1.1 gibt es das „Delegation Event Model“,
d.h. Schaltflächen, Fenster, usw. können Ereignisse wie ActionEvent
(„Schaltfläche gedrückt“), WindowEvent („Fenster aktiviert“, „Fenster
geschlossen“, ...), MouseEvent („Mausknopf gedrückt“, „Maus bewegt“, ...)
usw. auslösen.
Das Senden von Ereignissen macht jedoch nur Sinn, wenn es zu jedem
Ereignis auch einen entsprechenden Empfänger (z.B. JFrame) gibt, der
auf die Ereignisse reagieren kann.
Deshalb muss sich ein Empfänger beim Sender registrieren. Das geschieht
immer nach dem Muster
Sender.addXYZListener(Empfänger);
Der Empfänger muss für jede Ereignisart entsprechende Methoden
bereitstellen, die diese Ereignisse behandeln (actionPerformed,
windowActivated, windowClosed, mouseKlicked, mouseMoved, ...).
GK Informatik mit Java
8
© 2004 Pohlig - Taulien
Delegation Event Model
Beispiel:
Ein Programm enthält eine Schaltfläche jbKlick, die Aktionsereignisse
(ActionEvent) auslösen kann, und eine Klasse MeinKlickAbhorcher,
die für die Ereignisbehandlung zuständig ist.
Dann kann sich MeinKlickAbhorcher bei der Schaltfläche jbKlick mit
jbKlick.addActionListerner(new
MeinKlickAbhorcher());
als Empfänger beim Sender jbKlick registrieren.
MeinKlickAbhorcher muss dabei die Methode actionPerformed
implementieren.
GK Informatik mit Java
9
© 2004 Pohlig - Taulien
Delegation Event Model
Oft ist es zu aufwändig, eigene Klassen zur Ereignisbehandlung zu
schreiben.
Dann kann z.B. ein JFrame selbst ein Ereignisempfänger sein.
Das macht man, in dem der JFrame ein entsprechendes Interface zur
Ereignisbehandlung implementiert:
class MeinFrame extends JFrame
implements ActionListener { ...
Dann registriert sich MeinFrame beim Sender jbKlick mit der
Anweisung
jbKlick.addActionListener(this);
JFrame muss die Methode actionPerformed implementieren.
GK Informatik mit Java
10
© 2004 Pohlig - Taulien
Grundgerüst mit Ereignissteuerung
Das zugehörige Paket
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
Das Programm zu einem
Aktionsabhorcher machen.
public class JRotGelbGruen extends JFrame
implements ActionListener {
Im Konstruktor:
…
jbRot = new JButton("rot");
jbRot.addActionListener(this);
…
Den Aktionsabhorcher
beim Button registrieren.
public void actionPerformed(ActionEvent e) { überschreiben
Object obj = e.getSource();
if (obj = = jbRot) jpButtons.setBackground(Color.RED);
if (obj = = jbGelb) jpButtons.setBackground(Color.YELLOW);
…
Wer hat das Ereignis ausgelöst?
… entstprechend reagieren.11
GK Informatik mit Java
© 2004 Pohlig - Taulien
Aufgabe
Erweitern Sie das Programm „JRotGelbGruen“ zu
„JRotGelbGruenMagenta“.
GK Informatik mit Java
12
Herunterladen