140 likes | 369 Views
Swing. Ereignissteuerung. Auf Button-Klick reagieren. Schaltfläche „rot“ geklickt. Auf Button-Klick reagieren. Schaltfläche „grün“ geklickt. Auf Button-Klick reagieren. Schaltfläche „neutral“ geklickt. Auf Button-Klick reagieren. Auf Button-Klick reagieren. Auf Button-Klick reagieren.
E N D
Swing Ereignissteuerung
Auf Button-Klick reagieren GK Informatik mit Java
Schaltfläche „rot“ geklickt Auf Button-Klick reagieren GK Informatik mit Java
Schaltfläche „grün“ geklickt Auf Button-Klick reagieren GK Informatik mit Java
Schaltfläche „neutral“ geklickt Auf Button-Klick reagieren GK Informatik mit Java
Auf Button-Klick reagieren GK Informatik mit Java
Auf Button-Klick reagieren Programm beendet GK Informatik mit Java
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
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
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
Das zugehörige Paket Das Programm zu einem Aktionsabhorcher machen. Den Aktionsabhorcher beim Button registrieren. überschreiben Wer hat das Ereignis ausgelöst? … entstprechend reagieren. Grundgerüst mit Ereignissteuerung import java.awt.*; import javax.swing.*; import java.awt.event.*; public class JRotGelbGruen extends JFrame implements ActionListener { Im Konstruktor: … jbRot = new JButton("rot"); jbRot.addActionListener(this); … public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if (obj = = jbRot) jpButtons.setBackground(Color.RED); if (obj = = jbGelb) jpButtons.setBackground(Color.YELLOW); … GK Informatik mit Java
Erweitern Sie das Programm „JRotGelbGruen“ zu „JRotGelbGruenMagenta“. Aufgabe GK Informatik mit Java