Grundlagen der Informatik für Ingenieure I 10. Eventhandling in Java GdI 10.1 Ereignisse (Events vs. Exceptions) 10.2 Eventhandling in Java 10.3 Listener 10.4 Adapter 10.5 Beispiel: Buttons 10.6 Anonymous Inner Classes 10.7 Mouse- und Key- Eventhandling 10.8 Listener (Übersicht) Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .1 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.1 Ereignisse (Events vs. Exceptions) 10.1 Ereignisse (Events vs. Exceptions) ■ Java unterscheidet drei Arten von Ereignissen: ◆ Errors: Interne Fehler in der JVM bzw. vom Benutzerprogramm zur Laufzeit nicht behandelbare Fehler ◆ Exceptions: alle anderen Ereignisarten, ausgenommen Interaktionsereignisse mit dem GUI, unterteilt in • Runtime Exceptions • I/O-Exceptions • sonstige Exceptions ◆ Events: Interaktionsereignisse mit dem GUI (dieses Kapitel) GdI Errors und Exceptions: Siehe spätere Kapitel Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .2 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.2 Eventhandling in Java 10.2 Eventhandling in Java ◆ Eventhandling in Java ist Teil des AWT-package. ◆ Es dient der Kommunikation eines Programmsystems mit der “Benutzeroberfläche”, dem User-Interface (UI; GUI). ◆ Es handelt sich hierbei z. B. um • Keyboard - Betätigungen • Mouse - Bewegungen oder Mouse-Clicks • Interaktionen mit der Graphischen Benutzeroberfläche. ◆ Wir müssen in unserem Programm eine Konstruktion vorsehen, die aufpasst, ob ein solches Ereignis eintritt. GdI ◆ Das ist Aufgabe der "Listener". Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .3 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.3 Listener 10.3 Listener ◆ Das AWT-Package stellt uns, geordnet nach Eventklassen, “Listener” zur Verfügung. ◆ Listener sind Interfaces, die durch ihre Definition das Handling mit Events vorgeben. ◆ Beispiele für Listener sind: MouseListener ActionListener KeyListener GdI ◆ Damit das Laufzeitsystem weiß, dass wir einen solchen Dienst in Anspruch nehmen wollen, müssen wir Listener bei der jeweiligen AWT-Komponenten (Button, Checkbox, ... ) anmelden (registrieren). Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .4 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.3 Listener 10.3 Listener ◆ Für jeden Listener gibt es eine add-method() mit der man ihn registrieren lassen kann, z. B.: addMouseListener(...) addMouseMotionListener(...) addKeyListener(...) ◆ Zu jedem Listener existiert eine entsprechende Event class, • z. B. zum MouseListener die Klasse MouseEvent oder zum ActionListener die Klasse ActionEvent • In diesen Klassen sind Methoden definiert, die man bei der Behandlung der zugehörigen Events benötigt. GdI • Tritt ein Event auf, wird ein Objekt der zugehörigen Event class erzeugt und der entsprechenden Listener - Methode übergeben. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .5 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.4 Adapter 10.4 Adapter ◆ Bei der Verwendung eines Interfaces muss dieses vollständig implementiert werden, auch dann, wenn man nur einen Teil der Funktionalität ausnutzen will. Aus diesem Grund gibt es für viele Listener Adapter. ◆ Adapter sind (abstrakte) Klassen! Sie implementieren vollständig im Sinne von Methodendefinitionen, u. U. auch mit leerem Rumpf - die entsprechenden Interfaces z. B. public abstract class MouseAdapter..... implements MouseListener {...} GdI ◆ Wenden wir Adapter an, brauchen wir nur die Methoden zu implementieren (overriding), die wir zur Lösung unseres Problems benötigen. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .6 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons ◆ Beispiel für die Anwendung eines Listeners: // button actions import java.awt.*; import java.awt.event.*; public class ButtonActionsTest extends java.applet.Applet { Button redButton, blueButton, greenButton; GdI class RedButtonListener implements ActionListener { public void actionPerformed( ActionEvent e ) { setBackground( Color.red ); } } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .7 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons ◆ Beispiel für die Anwendung eines Listeners (cont.): class BlueButtonListener implements ActionListener { public void actionPerformed( ActionEvent e ) { setBackground( Color.blue ); } } GdI class GreenButtonListener implements ActionListener { public void actionPerformed( ActionEvent e ) { setBackground( Color.green ); } } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .8 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons ◆ Beispiel für die Anwendung eines Listeners (cont.): public void init() { setFont( new Font( "Helvetiva", Font.BOLD, 72 ) ); setBackground( Color.white ); setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) ); redButton = new Button( "Red" ); RedButtonListener redListener = new RedButtonListener(); redButton.addActionListener( redListener ); add( redButton ); blueButton = new Button( "Blue" ); BlueButtonListener blueListener = new BlueButtonListener(); blueButton.addActionListener( blueListener); add( blueButton ); greenButton = new Button( "Green" ); GreenButtonListener greenListener = new GreenButtonListener(); greenButton.addActionListener( greenListener); add( greenButton ); GdI } } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .9 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons ◆ Zum Beispiel: • Es wird das Interface ActionListener verwendet • Der ActionListener enthält nur eine Methode: actionPerformed( ActionEvent e ) • Zu actionPerformed gehört die Eventklasse ActionEvent. • Mit der add-method(): addActionListener( ... ) wird der ActionListener bei dem jeweiligen Button registriert • Die ButtonListener wurden innerhalb einer anderen Klasse (der Applet-Klasse) definiert. GdI • Man nennt solche Klassen Inner Classes. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .10 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons ◆ Compilieren mit javac: GdI • Es werden für die äußere Klasse ButtonActionTest und für die 3 Inner Classes jeweils eine class-Datei (Byte-Code) erzeugt. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .11 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.5 Beispiel: Buttons 10.5 Beispiel: Buttons GdI ◆ Ergebnis mit Appletviewer: Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .12 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.6 Anonymous Inner Classes 10.6 Anonymous Inner Classes ◆ Eine Variante der Inner Class ist die Anonymous Inner Class ◆ Beispiel: Definition von Eventhandler-Classes als Anonymous Inner Classes: • Es wird für jeden Button ein Eventhandler-Objekt "ButtonListener" erzeugt. • Die Definition erfolgt "innerhalb" einer Klasse als sog. Anonymous Inner Classes. • Der Compiler generiert jeweils ein separates .class-file. GdI • Zur Laufzeit ist dadurch die Zuordnung Event/Eventhandler gegeben. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .13 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.6 Anonymous Inner Classes 10.6 Anonymous Inner Classes ◆ Beispiel: ButtonActionsInnerAnonym import java.awt.*; import java.awt.event.*; public class ButtonActionsInnerAnonym extends java.applet.Applet { Button redButton, blueButton, greenButton; public void init() { setFont( new Font( "Helvetiva", Font.BOLD, 72 ) ); setBackground( Color.white ); setLayout( new FlowLayout( FlowLayout.CENTER, 10, 10 ) ); redButton = new Button( "Red" ); add( redButton ); blueButton = new Button( "Blue" ); add( blueButton ); GdI greenButton = new Button( "Green" ); add( greenButton ); Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .14 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.6 Anonymous Inner Classes 10.6 Anonymous Inner Classes redButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ){ setBackground( Color.red ); } } ); blueButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ){ setBackground( Color.blue ); } } ); greenButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ){ setBackground( Color.green ); } } ); } GdI } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .15 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.6 Anonymous Inner Classes 10.6 Anonymous Inner Classes ◆ Compilieren mit javac: GdI • Es wird für jede Anonymous Inner Class eine class-Datei erzeugt. die zur Unterscheidung mit Ziffern versehen werden. • Durch Einführung der Anonymous Inner Classes wird der Code kürzer und übersichtlicher, durch deutliche Trennung von der Erzeugung der Buttons und der Registrierung (Anmeldung) der ActionListeners bei den Buttons. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .16 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.6 Anonymous Inner Classes 10.6 Anonymous Inner Classes GdI ◆ Ergebnis mit Appletviewer: Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .17 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling ◆ Mouse- und Key-Listener: Listener Interface MouseListener Events Method Definition mouse down public void mousePressed(MouseEvent e) mouse up public void mouseReleased(MouseEvent e) mouse enter public void mouseEntered(MouseEvent e) mouse exit public void mouseExited(MouseEvent e) mouse clicks public void mouseClicked(MouseEvent e) (a mouse click is a press followed by a release in the same location) MouseMotionListener KeyListener mouse move public void mouseMoved(MouseMotionEvent e) mouse drag public void mouseDragged(MouseMotionEvent e) key down public void keyReleased(KeyEvent e) key up public void keyPressed(KeyEvent e) key typed public void keyTyped(KeyEvent e) GdI (a key typed is a key down followed by the same key up) Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .18 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling ◆ Ein Beispiel mit vollständiger Implementation des Interfaces im Applet: /* draw lines at each click and drag */ import import import import java.awt.Graphics; java.awt.Color; java.awt.Point; java.awt.event.*; public class Lines extends java.applet.Applet implements MouseListener, MouseMotionListener { final int MAXLINES = 10; private Point starts[] = new Point[ MAXLINES ]; // starting points private Point ends[] = new Point[ MAXLINES ]; // endingpoints private Point anchor; // start of current line private Point currentpoint; // current end of line private int currline = 0; // number of lines GdI public void init() { setBackground( Color.white ); // register event listeners addMouseListener( this ); addMouseMotionListener( this ); } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .19 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling // needed to satisfy listener interfaces public public public public void void void void mouseMoved( MouseEvent e ) {} mouseClicked( MouseEvent e ) {} mouseEntered( MouseEvent e ) {} mouseExited( MouseEvent e ) {} public void mousePressed( MouseEvent e ) { if ( currline < MAXLINES ) anchor = new Point( e.getX(), e.getY() ); else System.out.println( "Too many lines." ); } public void mouseReleased( MouseEvent e ) { if ( currline < MAXLINES ) addline( e.getX(), e.getY() ); } GdI public void mouseDragged( MouseEvent e ) { if (currline < MAXLINES) { currentpoint = new Point( e.getX(), e.getY() ); repaint(); } } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .20 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling void addline( int x, int y ) { starts[ currline ] = anchor; ends[ currline ] = new Point( x, y ); currline++; currentpoint = null; anchor = null; repaint(); } public void paint( Graphics g ) { // draw existing lines for ( int i = 0; i < currline; i++ ) { g.drawLine( starts[i].x, starts[i].y, ends[i].x, ends[i].y ); } // draw current line g.setColor( Color.blue ); if ( currentpoint != null ) g.drawLine( anchor.x, anchor.y, currentpoint.x, currentpoint.y ); } GdI } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .21 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling GdI ◆ Ergebnis mit Appletviewer: Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .22 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling ◆ Ein Beispiel mit Testausgaben auf die Java-Console des Browsers: /* press a key then use arrows to move it around */ import import import import import java.awt.Graphics; java.awt.Color; java.awt.Event; java.awt.Font; java.awt.event.*; GdI public class Keys extends java.applet.Applet implements KeyListener { private char currkey; private int currx; private int curry private boolean notmove = true; public void init() { currx = ( this.getWidth() / 2 ) -8; //default curry = ( this.getHeight() / 2 ) -16; setBackground( Color.white ); setFont( new Font( "Helvetica", Font.BOLD, 36 ) ); addKeyListener( this ); } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .23 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling public void keyReleased( KeyEvent e) { } public void keyTyped( KeyEvent e ) { } public void keyPressed( KeyEvent e ) { GdI if ( e.getKeyCode() == curry += 5; notmove = false; } if ( e.getKeyCode() == curry -= 5; notmove = false; } if ( e.getKeyCode() == currx -= 5; notmove = false; } if ( e.getKeyCode() == currx += 5; notmove = false; } KeyEvent.VK_DOWN ) { KeyEvent.VK_UP ) { KeyEvent.VK_LEFT ) { KeyEvent.VK_RIGHT ) { Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .24 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling if ( notmove ) { currkey = e.getKeyChar(); } notmove = true; repaint(); } public void paint(Graphics g) { if ( currkey != 0 ) { g.drawString( String.valueOf( currkey ), currx, curry ); } } GdI } Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .25 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.7 Mouse- und Key - Eventhandling 10.7 Mouse- und Key - Eventhandling GdI ◆ Ergebnis mit Appletviewer: Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .26 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.8 Listener (Übersicht) 10.8 Listener (Übersicht) Listener Methods ActionListener actionPerformed(ActionEvent e) AdjustmentListener adjustmentValueChanged(AdjustmentEvent e) ComponentListener componentResized(ComponentEvent e) componentMoved(ComponentEvent e) componentShown(ComponentEvent e) componentHidden(ComponentEvent e) ContainerListener componenentAdded(ContainerEvent e) componenentRemoved(ContainerEvent e) FocusListener focusGained(FocusEvent e) GdI focusLost(FocusEvent e) ItemListener itemStateChanged(ItemEvent e) TextListener textValueChanged(TextEvent e) Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .27 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. 10.8 Listener (Übersicht) 10.8 Listener (Übersicht) Listener WindowListener Methods windowActivatet(WindowEvent e) windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeactivatet(WindowEvent e) windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) GdI ◆ Die Methoden der Event-classes finden Sie unter ...java.awt.event. Grundlagen der Informatik für Ingenieure I Gunter Bolch, Claus-Uwe Linster, Franz-Xaver Wurm • Universität Erlangen-Nürnberg • Informatik 4, 2004 kap10_eventhandling.fm 2004-06-23 10.16 .28 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.