Download Objektorientierte Softwareentwicklung

Transcript
Kapitel 5 Graphische Benutzeroberflächen mit Swing
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] _) {
JFrame f = new JFrame ( ) ;
f . getContentPane ( ) . add ( new ApfelWithMouse ( ) ) ;
f . pack ( ) ;
f . s e t V i s i b l e ( true ) ;
}
28
29
30
31
32
33
34
}
Listing 5.32: ApfelWithMouse.java
5.4.5 Fensterereignisse
Auch für Fenster in einer graphischen Benutzeroberfläche existieren eine Reihe von Ereignissen. Das Fenster kann minimiert oder maximiert werden, es
kann das aktive Fenster oder im Hintergrund sein und es kann schließlich auch
geschlossen werden. Um die Reaktion auf solche Ereignisse zu spezifizieren existiert
die Schnittstelle WindowListener mit entsprechender prototypischer Adapterklasse
WindowAdapter. Die Objekte der Fensterereignisbehandlung können mit der Methode addWindowListener Fensterkomponenten hinzugefügt werden.
In den bisher vorgestellten Programmen wird Java nicht beendet, wenn das einzige
Fenster der Anwendung geschlossen wurde. Man kann an der Konsole sehen, dass
der Javainterpreter weiterhin aktiv ist. Das liegt daran, dass wir bisher noch nicht
spezifiziert haben, wie die Fensterkomponenten auf das Ereignis des Schließens des
Fensters reagieren sollen. Dieses kann mit einem Objekt, das WindowListener implementiert in der Methode windowClosing spezifiziert werden. Wir schreiben hier
eine Version des Apfelmännchenprogramms, in dem das Schließen des Fensters den
Abbruch des gesamten Programms bewirkt.
1
package name . p a n i t z . c r e m p e l . t o o l . a p f e l ;
2
3
4
import j a v a x . swing . JFrame ;
import j a v a . awt . e v e n t . * ;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
p u b l i c c l a s s C l o s i n g A p f e l F r am e {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
JFrame f = new JFrame ( ) ;
f . add ( new ApfelWithMouse ( ) ) ;
f . addWindowListener ( new WindowAdapter ( ) {
p u b l i c v o i d windowClosing ( WindowEvent e ) {
System . e x i t ( 0 ) ;
}
}) ;
f . pack ( ) ;
f . s e t V i s i b l e ( true ) ;
}
}
130