Tag 9: Grafische Benutzeroberflächen
|
|
- Willi Geisler
- vor 5 Jahren
- Abrufe
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.1 Realisierung grafischer Benutzungsoberflächen Beispiel Java AWT und Swing 1.2 Grundlagen der 2D-Computergrafik Beispiel Java-Grafikprogrammierung,
MehrUniversitä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)
MehrEinfü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.
MehrKurs: 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
MehrEinfü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.
MehrEinstieg 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
MehrBenutzeroberflä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
MehrB1. 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
MehrObjektorientierte 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
MehrInstitut 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
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:
MehrEAD 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,
MehrGUI 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
MehrJava - 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
MehrGrafikprogrammierung 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
MehrAufgabe 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
MehrKapitel 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
MehrGraphische 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
MehrGrundlagen 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
MehrZiele. 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
MehrEreignisverwaltung 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
MehrEinfü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
MehrB1. 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
MehrSeite 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
MehrProgrammieren 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,
MehrEinfü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
MehrZentrale 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
MehrB1. 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
MehrProgrammieren 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"
MehrIst 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
MehrEventhandling. 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
MehrBeispiel: Eine Choice-Liste...
Beispiel: Eine Choice-Liste...! "#%$&! ; = '( ) )+**,-. /*0 1 2 ) 3 #%$+45* 6 7%$& -* 89 #6 #:/*0 #%$ < /0 # 1< ) 1< >?270 #@ < /0 # 1 2 ) )
MehrVorlesung 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
MehrProbeklausur 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
MehrHeute. 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
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:
MehrEreignisse (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
Mehr7. 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
MehrWas 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
MehrGUI-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 Aufgabe 8: Implementierung eines Ereignis-Automaten a) Modellieren Sie einen Ereignis-Automaten für den in der Abbildung dargestellten und in Calculator.java
MehrEinstieg 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
MehrEinfü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
MehrNeben 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
MehrSpeichern 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
MehrEinfü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
MehrJavakurs 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
MehrProbeklausur: 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,
MehrEventhandling. 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
MehrEinfü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
MehrI. 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
MehrObjektorientierte 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
MehrProgrammierung 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
MehrFakultä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
MehrGraphical 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
Mehr7. 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,
MehrImages. 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
MehrGUI-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
MehrObjektorientierte 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
MehrGrafische 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
MehrGUI 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
MehrSoftwaretechnik (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.
MehrUniversitä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
Mehrimport 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
MehrAK-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
MehrEinfü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
MehrGRAFISCHE 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
MehrGrafikausgabe 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
MehrEingabe 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):
MehrLö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
MehrFunktionale 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
MehrSchablonen 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
MehrGraphische 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrCS1005 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
MehrGrafische 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
MehrBenutzeroberflä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
Mehr11. 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();
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,
MehrWiederholung. 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
MehrPraktikum 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
MehrProinformatik: 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
MehrKonzepte 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
MehrJava 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
MehrNTB 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
MehrInstrumentierung 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
MehrEin 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
MehrGrafische 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"
MehrAuswahl 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
MehrDrucken. 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
MehrBegriffe 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
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