Tag 9: Grafische Benutzeroberflächen

Größe: px
Ab Seite anzeigen:

Download "Tag 9: Grafische Benutzeroberflächen"

Transkript

1 Kapitel 10 Tag 9: Grafische Benutzeroberflächen In Java gibt es zunächst zwei verschiedene Möglichkeiten Klassen für die Grafikausgabe zu verwenden. Eine Möglichkeit ist AWT (=Abstrakt Windows Toolkit) und die andere ist Swing. Die Erzeugung von Fenstern ist in beiden Varianten zunächst sehr ähnlich, aber spätenstens beim Füllen der Fensterflächen unterschieden sich beide sehr. Wir werden in den folgenden Abschnitten AWT näher besprechen Fenstermanagment unter AWT Ein Fenster erzeugen Wir können schon mit wenigen Zeilen ein Fenster erzeugen, indem wir die Klasse Frame im package java.awt verwenden. 1 import j a v a. awt. Frame ; 2 p u b l i c c l a s s M e i n E r s t e s F e n s t e r { 3 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 4 / / ö f f n e t e i n AWT F e n s t e r 5 Frame f = new Frame ("So einfach geht das?" ) ; 6 f. s e t S i z e ( 3 0 0, ) ; 7 f. s e t V i s i b l e ( true ) ; 8 9 / / L e i d e r l ä s s t es s i c h noch n i c h t s c h l i e s s e n : ), a b e r STRG+C 10 / / b e e n d e t d i e Anwendung und s c h l i e s s t das F e n s t e r } 12 } Unser Programm liefert folgende Ausgabe: Nach der Erzeugung des Fensters ist die Ausgabeposition die linke obere Ecke des Bildschirms. 105

2 106 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN Das Fenster zentrieren Um das Fenster nun zu zentrieren, lesen wir zunächst die Bildschirmgrösse ein und setzen dann die Koordinaten des Fensters entsprechend. 2 p u b l i c c l a s s F e n s t e r P o s i t i o n i e r e n extends Frame { 3 p u b l i c F e n s t e r P o s i t i o n i e r e n ( i n t x, i n t y ) { 4 s e t T i t l e ("Ab in die Mitte!" ) ; 5 s e t S i z e ( x, y ) ; 6 Dimension d = T o o l k i t. g e t D e f a u l t T o o l k i t ( ). g e t S c r e e n S i z e ( ) ; 7 s e t L o c a t i o n ( ( d. width g e t S i z e ( ). width ) / 2, 8 ( d. h e i g h t g e t S i z e ( ). h e i g h t ) / 2 ) ; 9 s e t V i s i b l e ( true ) ; 10 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 13 F e n s t e r P o s i t i o n i e r e n f = new F e n s t e r P o s i t i o n i e r e n ( 2 0 0, ) ; 14 } 15 } Nun wird das Fenster in der Mitte positioniert Zeichenfunktionen innerhalb des Fensters verwenden AWT bietet eine Reihe von Zeichenfunktionen an. Alle mit ihren Feinheiten zu beschreiben würde wieder ein ganzes Buch füllen. Wir wollen an dieser Stelle nur ein paar grundlegende Beispiele erläutern und den Leser motivieren, spätestens hier die Java API [29] als Hilfsmittel zu verwenden Textausgaben Wir wollen mit dem einfachen Beispiel beginnen, einen Text innerhalb des Fensterbereichs auszugeben. Zusätzlich zeigen wir in diesem Beispiel, wie sich die Farben des Vorder- und Hintergrunds verändern lassen.

3 10.1. FENSTERMANAGMENT UNTER AWT p u b l i c c l a s s T e x t F e n s t e r extends Frame { 3 p u b l i c T e x t F e n s t e r ( S t r i n g t i t e l ) { 4 s e t T i t l e ( t i t e l ) ; 5 s e t S i z e ( 5 0 0, ) ; 6 s e t B a c k g r o u n d ( Color. l i g h t G r a y ) ; 7 s e t F o r e g r o u n d ( Color. r e d ) ; 8 s e t V i s i b l e ( true ) ; 9 } p u b l i c void p a i n t ( G r a p h i c s g ) { 12 g. d r a w S t r i n g ("Was soll ich nur schreiben?", 120, 60 ) ; 13 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 16 T e x t F e n s t e r t = new T e x t F e n s t e r ("Text im Fenster" ) ; 17 } 18 } Zeichenelemente Exemplarisch zeigt dieses Beispiel die Verwendung der Zeichenfunktionen: drawrect und drawline. Auch hier haben wir eine zusätzliche Funktionalität eingebaut, die Wartefunktion. 2 p u b l i c c l a s s T e x t F e n s t e r 2 extends Frame { 3 p u b l i c T e x t F e n s t e r 2 ( S t r i n g t i t e l ) { 4 s e t T i t l e ( t i t e l ) ; 5 s e t S i z e ( 5 0 0, ) ; 6 s e t B a c k g r o u n d ( Color. l i g h t G r a y ) ; 7 s e t F o r e g r o u n d ( Color. r e d ) ; 8 s e t V i s i b l e ( true ) ; 9 } p u b l i c s t a t i c void wartemal ( long m i l l i s ) { 12 t r y { 13 Thread. s l e e p ( m i l l i s ) ; 14 } catch ( I n t e r r u p t e d E x c e p t i o n e ) { } 15 } p u b l i c void p a i n t ( G r a p h i c s g ) { 18 g. drawrect ( 3 0, 5 0, 4 4 0, ) ; 19 g. s e t C o l o r ( Color. b l a c k ) ; 20 g. drawline ( 3 0, 1 5 0, 4 7 0, ) ; 21 g. s e t F o n t ( new Font ("SansSerif", Font.BOLD, 2 0 ) ) ;

4 108 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN 22 g. d r a w S t r i n g ("Schick!", 60, 8 0 ) ; 23 wartemal ( ) ; 24 g. d r a w S t r i n g ("Geht so...", 350, ) ; 25 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 28 T e x t F e n s t e r 2 t = new T e x t F e n s t e r 2 ("Text im Fenster" ) ; 29 } 30 } Unser Programmcode liefert nach der Ausführung folgende Ausgabe und ca. 3 Sekunden später eine weitere verzögerte zusätzliche Ausgabe Die Klasse Color verwenden Für grafische Benutzeroberflächen sind Farben sehr wichtig. Um das RGB-Farbmodell zu verwenden, erzeugen wir viele farbige Rechtecke, deren 3 Farbkomponenten rot, grün und blau zufällig gesetzt werden. Dazu erzeugen wir ein Color-Objekt und setzen diese Farbwerte. 2 import j a v a. u t i l. Random ; 3 4 p u b l i c c l a s s T e x t F e n s t e r 3 extends Frame { 5 p u b l i c T e x t F e n s t e r 3 ( S t r i n g t i t e l ) { 6 s e t T i t l e ( t i t e l ) ; 7 s e t S i z e ( 5 0 0, ) ;

5 10.1. FENSTERMANAGMENT UNTER AWT s e t B a c k g r o u n d ( Color. l i g h t G r a y ) ; 9 s e t F o r e g r o u n d ( Color. r e d ) ; 10 s e t V i s i b l e ( true ) ; 11 } p u b l i c s t a t i c void wartemal ( long m i l l i s ) { 14 t r y { 15 Thread. s l e e p ( m i l l i s ) ; 16 } catch ( I n t e r r u p t e d E x c e p t i o n e ) { } 17 } p u b l i c void p a i n t ( G r a p h i c s g ) { 20 Random r = new Random ( ) ; 21 g. c l e a r R e c t ( 0, 0, getwidth () 1, g e t H e i g h t ( ) 1 ) ; f o r ( i n t y =30; y< g e t H e i g h t () 10; y += 15) 24 f o r ( i n t x =12; x< getwidth () 10; x += 15) { 25 g. s e t C o l o r ( new Color ( r. n e x t I n t ( ), 26 r. n e x t I n t ( ), 27 r. n e x t I n t ( ) ) ) ; 28 g. f i l l R e c t ( x, y, 10, 10 ) ; 29 g. s e t C o l o r ( Color.BLACK ) ; 30 g. drawrect ( x 1, y 1, 10, 1 0 ) ; 31 } 32 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 35 T e x t F e n s t e r 3 t = new T e x t F e n s t e r 3 ("Farbe im Fenster" ) ; 36 } 37 } Bilder laden und anzeigen Mit der Methode drawimage können wir Bilder anzeigen lassen. In den Zeilen 20 und 21 geschieht aber leider nicht das, was wir erwarten würden. Die Funktion getimage bereitet das Laden des Bildes nur vor. Der eigentliche Ladevorgang erfolgt erst beim Aufruf von drawimage. Das hat zum einen den Nachteil, dass bei einer Wiederverwendung der Methode paint jedesmal das Bild neu geladen wird. 2 import j a v a. u t i l. Random ; 3 4 p u b l i c c l a s s T e x t F e n s t e r 4 extends Frame { 5 p u b l i c T e x t F e n s t e r 4 ( S t r i n g t i t e l ) { 6 s e t T i t l e ( t i t e l ) ; 7 s e t S i z e ( 5 0 0, ) ;

6 110 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN 8 s e t B a c k g r o u n d ( Color. l i g h t G r a y ) ; 9 s e t F o r e g r o u n d ( Color. r e d ) ; 10 s e t V i s i b l e ( true ) ; 11 } p u b l i c s t a t i c void wartemal ( long m i l l i s ) { 14 t r y { 15 Thread. s l e e p ( m i l l i s ) ; 16 } catch ( I n t e r r u p t e d E x c e p t i o n e ) { } 17 } p u b l i c void p a i n t ( G r a p h i c s g ) { 20 Image p i c = T o o l k i t. g e t D e f a u l t T o o l k i t ( ). getimage ("C:\\maja.jpg" ) ; 21 g. drawimage ( pic, 20, 20, t h i s ) ; 22 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 25 T e x t F e n s t e r 4 t = new T e x t F e n s t e r 4 ("Text im Fenster" ) ; 26 } 27 } Wir können aber mit Hilfe der Klasse Mediatracker die Bilder vor der eigentlichen Anzeige in den Speicher laden. Dazu verwenden wir folgende Zeilen beispielsweise im Konstruktor: 1 Image img ; img = g e t T o o l k i t ( ). getimage ("c:\\maja.jpg" ) ; 4 M e d i a t r a c k e r mt = new M e d i a t r a c k e r ( t h i s ) ; 5 mt. addimage ( img, 0 ) ; 6 t r y { 7 mt. w a i t F o r A l l ( ) ; 8 } catch ( I n t e r r u p t e d E x c e p t i o n e ) { } g. drawimage ( img, 20, 20, t h i s ) ; Fenster- und Mausereignisse behandeln Als Standardfensterklasse werden wir in den folgenden Abschnitten immer von dieser erben: 1 / K l a s s e : M e i n F e n s t e r 2 S t a n d a r d f e n s t e r, d a s s z e n t r i e r t e r z e u g t ( a b e r 3 noch n i c h t a n g e z e i g t ) wird. 4 /

7 10.1. FENSTERMANAGMENT UNTER AWT import j a v a. awt. ; 6 7 p u b l i c c l a s s M e i n F e n s t e r extends Frame { 8 p u b l i c M e i n F e n s t e r ( S t r i n g t i t e l, i n t w, i n t h ) { 9 t h i s. s e t T i t l e ( t i t e l ) ; 10 t h i s. s e t S i z e (w, h ) ; / / z e n t r i e r e das F e n s t e r 13 Dimension d = T o o l k i t. g e t D e f a u l t T o o l k i t ( ). g e t S c r e e n S i z e ( ) ; 14 t h i s. s e t L o c a t i o n ( ( d. width t h i s. g e t S i z e ( ). width ) / 2, 15 ( d. h e i g h t t h i s. g e t S i z e ( ). h e i g h t ) / 2 ) ; 16 } 17 } Die Klasse MeinFenster erzeugt ein auf dem Bildschirm zentriertes Fenster und kann mit einem Konstruktor und den Attributen titel, breite und hoehe erzeugt werden Fenster schliessen mit dem Interface WindowListener Unser folgendes Beispiel erbt zunächst von der Klasse MeinFenster und implementiert anschliessend das Interface WindowListener. In Zeile 10 fügen verknüpfen wir unsere Anwendung mit dem WindowListener und erreichen damit, dass bei Ereignissen, wie Fenster schliessen oder Fenster aktivieren Methoden aufgerufen werden, die wir implementiert haben. 1 / K l a s s e : F e n s t e r S c h l i e s s t 2 A b g e l e i t e t von M e i n F e n s t e r 3 i m p l e m e n t i e r t WindowListener 4 s c h l i e s s t F e n s t e r a u t o m a t i s c h 5 / 6 import j a v a. awt. ; 7 import j a v a. awt. e v e n t. ; 8 p u b l i c c l a s s F e n s t e r S c h l i e s s t extends M e i n F e n s t e r 9 implements WindowListener { 10 p u b l i c F e n s t e r S c h l i e s s t ( S t r i n g t i t e l, i n t w, i n t h ) { 11 super ( t i t e l, w, h ) ; 12 addwindowlistener ( t h i s ) ; / / wir r e g i s t r i e r e n h i e r den E r e i g n i s t y p 13 / / f ü r WindowEvents 14 s e t V i s i b l e ( true ) ; 15 } / / 18 / / Hier werden d i e WindowListener Methoden i m p l e m e n t i e r t 19 / / Methode : F e n s t e r wird g e s c h l o s s e n 20 p u b l i c void windowclosing ( WindowEvent e v e n t ) { 21 System. e x i t ( 0 ) ; 22 } 23 p u b l i c void windowclosed ( WindowEvent e v e n t ) {} 24 p u b l i c void windowdeiconified ( WindowEvent e v e n t ) {} 25 p u b l i c void w i n d o w I c o n i f i e d ( WindowEvent e v e n t ) {} 26 p u b l i c void windowactivated ( WindowEvent e v e n t ) {} 27 p u b l i c void windowdeactivated ( WindowEvent e v e n t ) {} 28 p u b l i c void windowopened ( WindowEvent e v e n t ) {} 29 / / p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 32 F e n s t e r S c h l i e s s t f = new F e n s t e r S c h l i e s s t ("Schliesse mich!", 200, ) ; 33 } 34 }

8 112 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN In Zeile 18 verwenden wir die Funktion System.exit(0). Es werden alle Fenster der Anwendung geschlossen und das Programm beendet. Leider haben wir mit der Implementierung des Interfaces WindowListener den Nachteil, dass wir alle Methoden implementieren müssen. Das Programm wird schnell unüberschaubar, wenn wir verschiedene Eventtypen abfangen wollen und für jedes Interface alle Methoden implementieren müssen. Hilfe verspricht die Klasse WindowAdapter, die das Interface WindowListener bereits mit leeren Funktionskörpern implementiert hat. Wir können einfach von dieser Klasse erben und eine der Methoden überschreiben. Um die restlichen brauchen wir uns nicht zu kümmern. 1 / K l a s s e : F e n s t e r S c h l i e s s t S c h i c k 2 A b g e l e i t e t von M e i n F e n s t e r 3 i m p l e m e n t i e r t WindowListener 4 s c h l i e s s t F e n s t e r a u t o m a t i s c h 5 / 6 import j a v a. awt. ; 7 import j a v a. awt. e v e n t. ; 8 p u b l i c c l a s s F e n s t e r S c h l i e s s t S c h i c k extends M e i n F e n s t e r { 9 p u b l i c F e n s t e r S c h l i e s s t S c h i c k ( S t r i n g t i t e l, i n t w, i n t h ) { 10 super ( t i t e l, w, h ) ; 11 / / Wir verwenden e i n e Klasse, d i e nur d i e gewünschten Methoden 12 / / d e r K l a s s e WindowAdapter ü b e r s c h r e i b t. 13 addwindowlistener ( new WindowClosingAdapter ( ) ) ; 14 s e t V i s i b l e ( true ) ; 15 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 18 F e n s t e r S c h l i e s s t S c h i c k f = 19 new F e n s t e r S c h l i e s s t S c h i c k ("Schliesse mich!", 200, ) ; 20 } 21 } / Etwas n e r v i g war es, a l l e Methoden, d i e das I n t e r f a c e WindowListener 24 a n g e b o t e n hat, ü b e r s c h r e i b e n zu müssen. Angenehmer i s t es, d i e 25 WindowAdapter K l a s s e zu verwenden. S i e h a t a l l e F u n k t i o n e n b e r e i t s 26 mit l eerem Programmkörper i m p l m e n t i e r t. Wollen wir nur e i n e F u n k t i o n 27 verwenden, so können wir i n e i n e r S u b k l a s s e von WindowAdapter d i e 28 gewünschte Methode ü b e r s c h r e i b e n. In diesem F a l l, windowclosing. 29 / 30 c l a s s WindowClosingAdapter extends WindowAdapter { 31 p u b l i c void windowclosing ( WindowEvent e ) { 32 System. e x i t ( 0 ) ; 33 } 34 } Wie können auch die Klasse WindowClosingAdapter als innere Klasse deklarieren. 2 import j a v a. awt. e v e n t. ; 3 4 p u b l i c c l a s s F e n s t e r S c h l i e s s t S c h i c k 2 extends M e i n F e n s t e r { 5 p u b l i c F e n s t e r S c h l i e s s t S c h i c k 2 ( S t r i n g t i t e l, i n t w, i n t h ) { 6 super ( t i t e l, w, h ) ; 7 addwindowlistener ( new WindowClosingAdapter ( ) ) ; 8 s e t V i s i b l e ( true ) ; 9 } / / 12 / / i n n e r e K l a s s e 13 p r i v a t e c l a s s WindowClosingAdapter extends WindowAdapter { 14 p u b l i c void windowclosing ( WindowEvent e ) { 15 System. e x i t ( 0 ) ;

9 10.1. FENSTERMANAGMENT UNTER AWT } 17 } 18 / / p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 21 F e n s t e r S c h l i e s s t S c h i c k 2 f = 22 new F e n s t e r S c h l i e s s t S c h i c k 2 ("Schliesse mich!", 200, ) ; 23 } 24 } Eine noch kürzere Schreibweise könnten wir erreichen, indem wir die Klasse WindowAdapter nur lokal erzeugen und die Funktion überschreiben (wie wir es bei dem sehr übersichtlich gestalteten Galileo-Onlinebuch [15] von Christian Ullenboom erfahren können). Wir nennen solche Klassen innere, anonyme Klassen. 1 import j a v a. awt. e v e n t. ; 2 p u b l i c c l a s s F e n s t e r S c h l i e s s t S c h i c k K u r z extends M e i n F e n s t e r { 3 p u b l i c F e n s t e r S c h l i e s s t S c h i c k K u r z ( S t r i n g t i t e l, i n t w, i n t h ) { 4 super ( t i t e l, w, h ) ; 5 / / Wir verwenden e i n e i n n e r e anonyme K l a s s e. Kurz und knapp. 6 addwindowlistener ( new WindowAdapter ( ) { 7 p u b l i c void windowclosing ( WindowEvent e ) { 8 System. e x i t ( 0 ) ; 9 } 10 } ) ; 11 s e t V i s i b l e ( true ) ; 12 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 15 F e n s t e r S c h l i e s s t S c h i c k K u r z f = 16 new F e n s t e r S c h l i e s s t S c h i c k K u r z ("Schliesse mich!", 200, ) ; 17 } 18 } Dieses Verfahren werden wir ab sofort für kleine Funktionen verwenden. Sollten die Funktionen zu gross werden, greifen wir auf die privaten Klassen zurück GUI-Elemente und ihre Ereignisse Wir werden uns nun exemplarisch Beispiele anschauen, bei denen GUI-Elemente erzeugt und auf Aktionen reagiert werden. Die Komponente Button 2 import j a v a. awt. e v e n t. ; 3 p u b l i c c l a s s GUI_Button extends M e i n F e n s t e r { 4 B u tton b u t t o n 1, b u t t o n 2 ; 5 Label l a b e l 1 ; 6 7 / / Im K o n s t r u k t o r e r z e u g e n wir d i e GUI Elemente 8 p u b l i c GUI_Button ( S t r i n g t i t e l, i n t w, i n t h ) { 9 super ( t i t e l, w, h ) ; 10 s e t S i z e (w, h ) ; / / Wir r e g i s t r i e r e n den WindowListener, um a u f 13 / / WindowEvents r e a g i e r e n zu können 14 addwindowlistener ( new MeinWindowListener ( ) ) ;

10 114 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN / / wir bauen e i n e n A c t i o n L i s t e n e r, d e r nur a u f Knopfdruck 17 / / r e a g i e r t 18 A c t i o n L i s t e n e r a k t i o n = new Knopfdruck ( ) ; s e t L a y o u t ( new FlowLayout ( ) ) ; 21 b u t t o n 1 = new B u tton ("Linker Knopf" ) ; 22 add ( b u t t o n 1 ) ; 23 b u t t o n 1. a d d A c t i o n L i s t e n e r ( a k t i o n ) ; 24 b u t t o n 1. setactioncommand ("b1" ) ; 25 b u t t o n 2 = new B u tton ("Rechter Knopf" ) ; 26 add ( b u t t o n 2 ) ; 27 b u t t o n 2. a d d A c t i o n L i s t e n e r ( a k t i o n ) ; 28 b u t t o n 2. setactioncommand ("b2" ) ; 29 l a b e l 1 = new Label ("Ein Label" ) ; 30 add ( l a b e l 1 ) ; 31 s e t V i s i b l e ( true ) ; 32 } / / 35 / / I n n e r e K l a s s e n f ü r das Eventmanagment 36 c l a s s MeinWindowListener extends WindowAdapter { 37 p u b l i c void windowclosing ( WindowEvent e v e n t ) { 38 System. e x i t ( 0 ) ; 39 } 40 } c l a s s Knopfdruck implements A c t i o n L i s t e n e r { 43 p u b l i c void a c t i o n P e r f o r m e d ( A c t i o n E v e n t e ) { 44 l a b e l 1. s e t T e x t ( e. getactioncommand ( ) ) ; 45 } 46 } 47 / / p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 50 GUI_Button f = new GUI_Button ("Schliesse mich!", 500, ) ; 51 } 52 }

11 10.1. FENSTERMANAGMENT UNTER AWT 115 Auf die Ereignisse individuell reagieren, Anzeige aber mit anderem LayoutManager: 2 import j a v a. awt. e v e n t. ; 3 4 p u b l i c c l a s s GUI_Button_Aktion extends M e i n F e n s t e r { 5 B u tton b u t t o n 1, b u t t o n 2 ; 6 Label l a b e l 1 ; 7 8 / / Im K o n s t r u k t o r e r z e u g e n wir d i e GUI Elemente 9 p u b l i c GUI_Button_Aktion ( S t r i n g t i t e l, i n t w, i n t h ) { 10 super ( t i t e l, w, h ) ; 11 s e t S i z e (w, h ) ; / / Wir r e g i s t r i e r e n den WindowListener, um a u f 14 / / WindowEvents r e a g i e r e n zu können 15 addwindowlistener ( new MeinWindowListener ( ) ) ; / / wir bauen e i n e n A c t i o n L i s t e n e r, d e r nur a u f Knopfdruck 18 / / r e a g i e r t 19 A c t i o n L i s t e n e r a k t i o n = new Knopfdruck ( ) ; s e t L a y o u t ( new BorderLayout ( ) ) ; b u t t o n 1 = new B u tton ("Linker Knopf" ) ; 24 add ( b u t t o n 1, BorderLayout.NORTH) ; 25 b u t t o n 1. a d d A c t i o n L i s t e n e r ( a k t i o n ) ; 26 b u t t o n 1. setactioncommand ("b1" ) ; b u t t o n 2 = new B u tton ("Rechter Knopf" ) ; 29 add ( b u t t o n 2, BorderLayout.SOUTH ) ; 30 b u t t o n 2. a d d A c t i o n L i s t e n e r ( a k t i o n ) ; 31 b u t t o n 2. setactioncommand ("b2" ) ; l a b e l 1 = new Label ("Platz für ein Label" ) ; 34 add ( l a b e l 1, BorderLayout. CENTER ) ; s e t V i s i b l e ( true ) ; 37 } p r i v a t e void B u t t o n 1 C l i c k e d ( ) { 40 l a b e l 1. s e t T e x t ("Button1" ) ; 41 } p r i v a t e void B u t t o n 2 C l i c k e d ( ) { 44 l a b e l 1. s e t T e x t ("Button2" ) ; 45 } 46 / / 47 / / I n n e r e K l a s s e n f ü r das Eventmanagment 48 c l a s s MeinWindowListener extends WindowAdapter { 49 p u b l i c void windowclosing ( WindowEvent e v e n t ) { 50 System. e x i t ( 0 ) ; 51 } 52 } c l a s s Knopfdruck implements A c t i o n L i s t e n e r { 55 p u b l i c void a c t i o n P e r f o r m e d ( A c t i o n E v e n t e ) { 56 / / wir b e h a n d e l n d i e E r e i g n i s s e 57 S t r i n g cmd = e. getactioncommand ( ) ; 58 i f ( cmd. e q u a l s ("b1" ) ) 59 B u t t o n 1 C l i c k e d ( ) ; 60 i f ( cmd. e q u a l s ("b2" ) ) 61 B u t t o n 2 C l i c k e d ( ) ;

12 116 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN 62 } 63 } 64 / / p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 67 GUI_Button_Aktion f = new GUI_Button_Aktion ("Klick mich...", 500, ) ; 68 } 69 } Die Komponente TextField 2 import j a v a. awt. e v e n t. ; 3 4 p u b l i c c l a s s GUI_Button_TextField extends M e i n F e n s t e r { 5 B u tton b u t t o n 1 ; 6 Label l a b e l 1 ; 7 T e x t F i e l d t e x t f i e l d 1 ; 8 9 / / Im K o n s t r u k t o r e r z e u g e n wir d i e GUI Elemente 10 p u b l i c GUI_Button_TextField ( S t r i n g t i t e l, i n t w, i n t h ) { 11 super ( t i t e l, w, h ) ; 12 s e t S i z e (w, h ) ; / / Wir r e g i s t r i e r e n den WindowListener, um a u f 15 / / WindowEvents r e a g i e r e n zu können 16 addwindowlistener ( new MeinWindowListener ( ) ) ; / / wir bauen e i n e n A c t i o n L i s t e n e r, d e r nur a u f Knopfdruck 19 / / r e a g i e r t 20 A c t i o n L i s t e n e r a k t i o n = new Knopfdruck ( ) ; s e t L a y o u t ( new FlowLayout ( ) ) ; t e x t f i e l d 1 = new T e x t F i e l d ("hier steht schon was", 2 5 ) ; 25 add ( t e x t f i e l d 1 ) ; 26

13 10.1. FENSTERMANAGMENT UNTER AWT b u t t o n 1 = new B u tton ("Knopf" ) ; 28 add ( b u t t o n 1 ) ; 29 b u t t o n 1. a d d A c t i o n L i s t e n e r ( a k t i o n ) ; 30 b u t t o n 1. setactioncommand ("b1" ) ; l a b e l 1 = new Label ("noch steht hier nicht viel" ) ; 33 add ( l a b e l 1 ) ; s e t V i s i b l e ( true ) ; 36 } p r i v a t e void B u t t o n 1 C l i c k e d ( ) { 39 S t r i n g t x t = t e x t f i e l d 1. g e t T e x t ( ) ; 40 l a b e l 1. s e t T e x t ( t x t ) ; 41 } / / 44 / / I n n e r e K l a s s e n f ü r das Eventmanagment 45 c l a s s MeinWindowListener extends WindowAdapter { 46 p u b l i c void windowclosing ( WindowEvent e v e n t ) { 47 System. e x i t ( 0 ) ; 48 } 49 } c l a s s Knopfdruck implements A c t i o n L i s t e n e r { 52 p u b l i c void a c t i o n P e r f o r m e d ( A c t i o n E v e n t e ) { 53 / / wir b e h a n d e l n d i e E r e i g n i s s e 54 S t r i n g cmd = e. getactioncommand ( ) ; 55 i f ( cmd. e q u a l s ("b1" ) ) 56 B u t t o n 1 C l i c k e d ( ) ; 57 } 58 } 59 / / p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 62 GUI_Button_TextField f = 63 new GUI_Button_TextField ("Klick mich...", 500, ) ; 64 } 65 }

14 118 KAPITEL 10. TAG 9: GRAFISCHE BENUTZEROBERFLÄCHEN Auf Mausereignisse reagieren 2 import j a v a. awt. e v e n t. ; 3 p u b l i c c l a s s MausKlick extends M e i n F e n s t e r { 4 p u b l i c MausKlick ( S t r i n g t i t e l, i n t w, i n t h ) { 5 super ( t i t e l, w, h ) ; 6 / / Wir verwenden e i n e i n n e r e anonyme K l a s s e. Kurz und knapp. 7 addwindowlistener ( new WindowAdapter ( ) { 8 p u b l i c void windowclosing ( WindowEvent e ) { 9 System. e x i t ( 0 ) ; 10 } 11 } ) ; 12 a d d M o u s e L i s t e n e r ( new MouseAdapter ( ) { 13 p u b l i c void mousepressed ( MouseEvent e ) { 14 G r a p h i c s g = g e t G r a p h i c s ( ) ; 15 g. s e t C o l o r ( Color. g r e e n ) ; 16 g. f i l l O v a l ( 5 0, 5 0, 1 0, 1 0 ) ; 17 } 18 } ) ; 19 } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 22 MausKlick f = new MausKlick ("Schliesse mich!", 200, ) ; 23 } 24 } Liefert nach Klick mit der Maus, innhalb des Fensters, folgende Ausgabe: 10.2 Das Projekt Taschenrechner Mit den Erkenntnissen, die wir aus den vorhergehenden Kapiteln gewonnen haben, wollen wir nun eine erste richtige Anwendung mit AWT schreiben. Unser Ziel ist es einen Taschenrechner zu implementieren, der auf verschiedene Eingaben reagiert und Operationen auf diesen Eingaben ausführen kann.

1. Konventionelle Ein-/Ausgabebetonte Programmierung

1. Konventionelle Ein-/Ausgabebetonte Programmierung 1. Konventionelle Ein-/Ausgabebetonte Programmierung 1.1 Realisierung grafischer Benutzungsoberflächen Beispiel Java AWT und Swing 1.2 Grundlagen der 2D-Computergrafik Beispiel Java-Grafikprogrammierung,

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek 1 Ereignis-orientierte Programmierung Prinzipien Programm besteht aus einer Reihe von Dämonen (=Listener) Dämon (=Listener)

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Kurs: Programmieren in Java

Kurs: Programmieren in Java Kurs: Programmieren in Java Tag 5 G R U N D L A G E N K I U N D S P I E L E - P R O G R A M M I E R U N G G R A F I K K O N Z E P T E B I L D V E R A R B E I T U N G M U S T E R E R K E N N U N G O B J

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout

Mehr

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs. Benutzeroberflächen Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, graphische Ausgabe, Menüs. Der Abstract Windowing Toolkit (awt) Jedes moderne Betriebssystem stellt bereit Fenster Menüs

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java

Mehr

(C) Sortieren und Suchen mit Java.-AWT Seite 1

(C)  Sortieren und Suchen mit Java.-AWT Seite 1 Sortieren sowie Suchen mit dem Halbierungsverfahren, programmiert mit der Java-AWT Funktion und Oberfläche sind in getrennten Klassen untergebracht. Die ganze Anwendung besteht damit aus drei Dateien:

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

GUI Programmierung mit JAVA Swing

GUI Programmierung mit JAVA Swing GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische

Mehr

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov Java - AWT Basispraktikum SystemArchitektur WS 2008/2209 09.12.2008 Atanas Dimitrov 1 Was besprechen wir heute: AWT Klassen Die Klasse Graphics AWT Methoden Die Klasse ToolKit Ausgabe von Bilder Die Klasse

Mehr

Grafikprogrammierung mit Java Teil 1/2

Grafikprogrammierung mit Java Teil 1/2 Grafikprogrammierung mit Java Teil 1/2 Martin Tischmann 15. Juni 2009 Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen

Mehr

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 1 Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Was ist der Unterschied zwischen a) einem Objekt und einer Klasse? b) der Instanz einer Klasse

Mehr

Kapitel 8: Grafische Benutzerschnittstellen

Kapitel 8: Grafische Benutzerschnittstellen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel 17. 6. 2010 Kapitel 8: Java-Programmierung 8.1 Ereignisbehandlung, Benutzungsschnittstellen 8.2 Graphikprogrammierung 8.1 Ereignisbehandlung

Mehr

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Ereignisverwaltung und Layout-Typen

Ereignisverwaltung und Layout-Typen Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Ereignisverwaltung

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 09 18.12.2013 Inhalt Korrektur Blatt 8 Wiederholung Design Patterns Einführung in GUI s mit Java Swing und AWT Einführung in die Programmierung für NF Übung

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

Mehr

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 'The

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische

Mehr

B1. Ein-/Ausgabebetonte Programmierung

B1. Ein-/Ausgabebetonte Programmierung B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität

Mehr

Programmieren 2 Selbststudium Semesterwoche 4

Programmieren 2 Selbststudium Semesterwoche 4 Programmieren 2 Selbststudium Semesterwoche 4 Kapitel 11.1, 11.2 und 11.3 1. Das Konzept "Interface" ist wichtig und ist uns schon mehrfach begegnet. In welchen Zusammenhängen hatten wir es schon mit "Interfaces"

Mehr

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt GUI GUI = Graphical User Interface Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt Gute Übersicht über alle Funktionalitäten

Mehr

Eventhandling. Delegation model Eventhandler model

Eventhandling. Delegation model Eventhandler model Eventhandling Dient der Kommunikation der Controlls mit der eigentlichen Anwendung. Prinzipiell gibt es zwei verschiedene Verfahren für das Eventhandling Delegation model Eventhandler model Die Arbeit

Mehr

Beispiel: Eine Choice-Liste...

Beispiel: Eine Choice-Liste... Beispiel: Eine Choice-Liste...! "#%$&! ; = '( ) )+**,-. /*0 1 2 ) 3 #%$+45* 6 7%$& -* 89 #6 #:/*0 #%$ < /0 # 1< ) 1< >?270 #@ < /0 # 1 2 ) )

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 07. Java: GUI und Ereignisbehandlung Teil

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1 Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

Mehr

Ereignisse (Events) in Java

Ereignisse (Events) in Java Ereignisse (Events) in Java werden durch Aktionen an GUI-Komponenten ausgelöst Quelle: GUI-Komponente, die ein Ereignis als Instanz einer Event-Klasse erzeugt Beispiel: ein Button, der angeklickt wird

Mehr

7. Architektur interaktiver Systeme

7. Architektur interaktiver Systeme 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen 7. Architektur interaktiver Systeme 7.2 Ereignisgesteuerter Programmablauf

Mehr

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Was passiert, wenn Button Ok? mit Maus angeklickt? Ein Beispiel-Frame Was passiert, wenn Button "Ok?" mit Maus angeklickt? gar nichts!!! FH AACHEN UNIVERSITY OF APPLIED SCIENCES OOS Prof. Dr. H. Faßbender Ereignisverarbeitung 27. April 2016 1 Implementierung

Mehr

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in

Mehr

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301 Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301 Aufgabe 8: Implementierung eines Ereignis-Automaten a) Modellieren Sie einen Ereignis-Automaten für den in der Abbildung dargestellten und in Calculator.java

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

Einführung in GUI-Programmierung. javax.swing

Einführung in GUI-Programmierung. javax.swing Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Speichern der Benutzereinstellungen

Speichern der Benutzereinstellungen Speichern der Benutzereinstellungen Die vorgestellte Methode, Daten in Dateien zu speichern, haben wir erfolgreich beim Fußballmanagerprojekt eingesetzt. Das wäre auch für das Speichern von Benutzereinstellungen

Mehr

Einführung in die OOP mit Java

Einführung in die OOP mit Java Einführung in die OOP mit Java Das Event-Hanlding Übersicht Event - Handling Das im JDK 1.1 Grundlagen Ereignistypen Ereignisquellen Adapterklassen für den Nachrichtenverkehr Variante1: Implementierung

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Eventhandling. Delegation model Eventhandler model

Eventhandling. Delegation model Eventhandler model Eventhandling Dient der Kommunikation der Controlls mit der eigentlichen Anwendung. Prinzipiell gibt es zwei verschiedene Verfahren für das Eventhandling Delegation model Eventhandler model Die Arbeit

Mehr

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Einführung: Grafische Benutzeroberflächen 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische

Mehr

I. Grundlagen II. Ereignistypen III. Ereignisempfänger. Event-Handling (EH)

I. Grundlagen II. Ereignistypen III. Ereignisempfänger. Event-Handling (EH) I. Grundlagen II. Ereignistypen III. Ereignisempfänger IV. Ereignisquellen V. Adapterklassen Event-Handling (EH) I. Grundlagen II. Ereignistypen III. Ereignisempfänger IV. Ereignisquellen V. Adapterklassen

Mehr

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 9 Übungen: Applets Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 1. Java-Applet mit Text 2. Java-Applet mit Bild und Text 3. Java-Applet mit Grafik 9 Applets 4. Java-Applet

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 12.12.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 8 Abgabe: Montag, 19.12.2011, 12.00 Uhr, Informatik

Mehr

Graphical User Interfaces

Graphical User Interfaces Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard

Mehr

7. Architektur interaktiver Systeme

7. Architektur interaktiver Systeme 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen (Fortsetzung) Layout-Manager Definition Ein Layout-Manager ist ein Objekt,

Mehr

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing

Images. Kommen auf zweierlei Weise zur Anwendung. Darstellung von Pixelbildern(.jpg,.gif,.png) Bilden die Grundlage für Offscreendrawing Graphics Klasse, die alle grundlegenden Methoden zum Zeichnen und Schreiben bereitstellt (draw -Methoden, Methoden zu Fonts und Colors) Bereitstellung eines Graphics-Objektes durch das AWT bei Aufruf der

Mehr

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java. Universität Osnabrück 1 GUI-Programmierung mit Java 3 - Objektorientierte Programmierung in Java Vorlesung 11: GUI 1: AWT (1) SS 2004 Prof. Dr. F.M. Thiesing, FH Dortmund Alle unsere bisherigen Anwendungsbeispiele

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm

Mehr

GUI Programmierung in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Layout Manager 5 Komplexere Swing Komponenten Prof. Dr.

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets Kapitel 3: Java Applets 1 Was sind Applets? kleine in Fenstern ausführbare Programme typisch: Aufruf im Browserfenster als Teil einer HTML-Seite Anfang des umgebenden HTML-Textes

Mehr

import java.awt.*; import java.awt.event.*; import javax.swing.*;

import java.awt.*; import java.awt.event.*; import javax.swing.*; Swing Workshop Dieser Workshop enthält grundsätzliche Informationen über Swing und Java und regt mit einigen Beispielen und Übungen zum weiteren Erkunden dieses Themengebietes an. Kapitel 1: Das erste

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Einführung in GUI-Programmierung. javax.swing

Einführung in GUI-Programmierung. javax.swing Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt

Mehr

GRAFISCHE BENUTZERSCHNITTSTELLEN

GRAFISCHE BENUTZERSCHNITTSTELLEN Vorlesung 4.4 GRAFISCHE BENUTZERSCHNITTSTELLEN Dr. Philip Mayer # 1 GUIs Grafische Benutzerschnittstellen (GUIs, Graphical User Interfaces) bieten dem Benutzer Zugriff auf ein Anwendungssystem GUIs sind

Mehr

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung Grafikausgabe mit dem Abstract- Windowing-Toolkit Eine Einführung Inhalt Einführung Grundlegende Eigenschaften des Abstract-Windowing- Toolkit (AWT) Grundlagen Grafikausgabe Linien zeichnen Rechtecke zeichnen

Mehr

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101 Eingabe von Texten SWE-101 Komponente TextField: einzeiliger, edierbarer Text Ereignisse: ActionEvent (wie bei Button) ausgelöst bei der Eingabe von Return einige Methoden (aus der Oberklasse TextComponent):

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

Mehr

Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden

Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden Generics Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden Typvariablen statt (fester) Datentypen werden hinter Bezeichnern in spitzen Klammern aufgezählt

Mehr

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung

Mehr

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15.  Institut für Angewandte Informatik Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events

Mehr

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15.  Institut für Angewandte Informatik Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Graphische Benutzerschnittstellen I GUI erzeugen Seite 1 GUI GUI: Graphical User Interface Graphische Benutzeroberfläche Seite 2

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Aufgabe Ein Benutzer soll

Mehr

Benutzeroberflächen. Java Teil 4

Benutzeroberflächen. Java Teil 4 Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor(); Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,

Mehr

Wiederholung. Klassenhierarchie:

Wiederholung. Klassenhierarchie: Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse

Mehr

Praktikum 4: Grafiken und Ereignisse

Praktikum 4: Grafiken und Ereignisse Praktikum 4: Grafiken und Ereignisse Aufgabe 1: Java Applikation Bisher haben wir in Java (ebenso wie in C) jeweils selbständige Konsole-Applikationen erstellt. Java wurde als Programmiersprache für das

Mehr

Proinformatik: Objektorientierte Programmierung - Tag 6 -

Proinformatik: Objektorientierte Programmierung - Tag 6 - Proinformatik: Objektorientierte Programmierung - Tag 6 - G R U N D L A G E N D E R B E R E C H E N B A R K E I T F O R M A L E V E R F A H R E N Z U R S P E Z I F I K A T I O N U N D V E R I F I K A T

Mehr

Konzepte objektorientierter Programmierung

Konzepte objektorientierter Programmierung Konzepte objektorientierter Programmierung Objekte Klassen Nachrichten Kapselung Einführung Vererbung heute! Konzepte objektorientierter Programmierung Was ist ein Objekt? Was ist eine Klasse? Was sind

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

NTB Druckdatum: 01.04.13 -

NTB Druckdatum: 01.04.13 - AWT UND SWING AWT = abstract windowing toolkit Bausteine Eigenes Fenster Programmcode steht nicht im Main, sondern in einer separaten Klasse extends JFrame JWindow selbstständiges Fenster, ohne Rahmen

Mehr

Instrumentierung und Dekodierung

Instrumentierung und Dekodierung 116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so

Mehr

Ein erstes "Hello world!" Programm

Ein erstes Hello world! Programm OOP Henrik Horstmann 14. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Die Benutzer Oberfläche von HOOPLU...2 2.1 Projekte öffnen und speichern...2 2.2 Die Klasse Program

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Auswahl aus mehreren Alternativen:

Auswahl aus mehreren Alternativen: 907 908 Texteingabe: TextField zeigt eine Text-Zeile, die vom Benutzer modifiziert werden kann. TextArea zeigt mehrere modifizierbare Text-Zeilen. Auswahl aus mehreren Alternativen: List scrollbare Liste

Mehr

Drucken. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Drucken. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 Drucken Grundlagen In Java wird zum Drucken die Java Printing API verwendet. Die entsprechenden Klassen und Schnittstellen

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

$ java awt.main A # typische Dekodierung $ java -Dtrace=all awt.main A # alle Events $ java -Dtrace=none awt.main A # keine Dekodierung

$ java awt.main A # typische Dekodierung $ java -Dtrace=all awt.main A # alle Events $ java -Dtrace=none awt.main A # keine Dekodierung 111 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Button [ Applet] Beispiel A dient zum Experimentieren mit Button- und Panel-Objekten. Button stammt von Component ab, stellt einen String

Mehr