Grafische Benutzeroberflächen Container Menüs JComponent JLabel/JTextField Buttons Events und Listener. Programmieren I.

Größe: px
Ab Seite anzeigen:

Download "Grafische Benutzeroberflächen Container Menüs JComponent JLabel/JTextField Buttons Events und Listener. Programmieren I."

Transkript

1 Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011

2 1 Grafische Benutzeroberflächen 2 Container 3 Menüs 4 JComponent 5 JLabel/JTextField 6 Buttons 7 Events und Listener

3 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI).

4 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus

5 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen

6 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability

7 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability

8 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability Typische Elemente von GUIs sind: Menüs

9 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability Typische Elemente von GUIs sind: Menüs Symbolleisten (tool bar)

10 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability Typische Elemente von GUIs sind: Menüs Symbolleisten (tool bar) Schaltfächen

11 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability Typische Elemente von GUIs sind: Menüs Symbolleisten (tool bar) Schaltfächen Auswahlfelder (button, radio button, check box, pull-down menu)

12 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface, GUI). Ziele sind: einfache Bedienung mit der Maus einheitliches Look & Feel der Anwendungen Stichwort: Usability Typische Elemente von GUIs sind: Menüs Symbolleisten (tool bar) Schaltfächen Auswahlfelder (button, radio button, check box, pull-down menu) Texteingabefelder

13 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten:

14 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit

15 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit Features: heavyweight: AWT definiert eine Abstraktionsebene über den Betriebssystembibliotheken für Oberflächen.

16 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit Features: heavyweight: AWT definiert eine Abstraktionsebene über den Betriebssystembibliotheken für Oberflächen. Auslagerung der Arbeit an das Betriebssystem

17 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit Features: heavyweight: AWT definiert eine Abstraktionsebene über den Betriebssystembibliotheken für Oberflächen. Auslagerung der Arbeit an das Betriebssystem Betriebssystem-typisches Look & Feel

18 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit Features: heavyweight: AWT definiert eine Abstraktionsebene über den Betriebssystembibliotheken für Oberflächen. Auslagerung der Arbeit an das Betriebssystem Betriebssystem-typisches Look & Feel aber uneinheitliches Aussehen der selben Anwendung auf verschiedenen Plattformen

19 AWT Bereits beim ersten Java-Release 1995 war ein Toolkit zum Erstellen grafischer Oberflächen enthalten: AWT Abstract Window Toolkit Features: heavyweight: AWT definiert eine Abstraktionsebene über den Betriebssystembibliotheken für Oberflächen. Auslagerung der Arbeit an das Betriebssystem Betriebssystem-typisches Look & Feel aber uneinheitliches Aussehen der selben Anwendung auf verschiedenen Plattformen Beschränkung auf kleinsten Nenner

20 Einfache AWT-Anwendung import java. awt. * ; p u b l i c c l a s s AwtApp { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { Frame myframe = new Frame ( " E r s t e s Fenster " ) ; myframe. s e t S i z e (400, ) ; myframe. add (new Label ( " Hallo " ) ) ; myframe. s e t V i s i b l e ( true ) ; } }

21 Swing Swing ist Teil der Java Foundation Classes, die ursprünglich von Netscape als Internet Foundation Classes entwickelt wurden und dann in Kooperation von Sun und Netscape in Java 1.2 integriert wurden.

22 Swing Swing ist Teil der Java Foundation Classes, die ursprünglich von Netscape als Internet Foundation Classes entwickelt wurden und dann in Kooperation von Sun und Netscape in Java 1.2 integriert wurden. Wesentliche Eigenschaften: Lightweight, die Widget-Klassen sind in Java selbst implementiert und setzen nur auf wenig Ressourcen des unterliegenden Betriebssystems auf.

23 Swing Swing ist Teil der Java Foundation Classes, die ursprünglich von Netscape als Internet Foundation Classes entwickelt wurden und dann in Kooperation von Sun und Netscape in Java 1.2 integriert wurden. Wesentliche Eigenschaften: Lightweight, die Widget-Klassen sind in Java selbst implementiert und setzen nur auf wenig Ressourcen des unterliegenden Betriebssystems auf. Einheitliches Aussehen der Anwendungen auf verschiedenen Plattformen.

24 Swing Swing ist Teil der Java Foundation Classes, die ursprünglich von Netscape als Internet Foundation Classes entwickelt wurden und dann in Kooperation von Sun und Netscape in Java 1.2 integriert wurden. Wesentliche Eigenschaften: Lightweight, die Widget-Klassen sind in Java selbst implementiert und setzen nur auf wenig Ressourcen des unterliegenden Betriebssystems auf. Einheitliches Aussehen der Anwendungen auf verschiedenen Plattformen. Entspricht nicht unbedingt dem Look & Feel des Betriebssystems.

25 Swing Swing ist Teil der Java Foundation Classes, die ursprünglich von Netscape als Internet Foundation Classes entwickelt wurden und dann in Kooperation von Sun und Netscape in Java 1.2 integriert wurden. Wesentliche Eigenschaften: Lightweight, die Widget-Klassen sind in Java selbst implementiert und setzen nur auf wenig Ressourcen des unterliegenden Betriebssystems auf. Einheitliches Aussehen der Anwendungen auf verschiedenen Plattformen. Entspricht nicht unbedingt dem Look & Feel des Betriebssystems. Erweiterbares Komponentenmodell.

26 Einfache Swing-Anwendung import javax. swing. * ; p u b l i c c l a s s SwingApp extends JFrame { p u b l i c SwingApp ( S t r i n g t i t l e ) { super ( t i t l e ) ; s e t S i z e (400, ) ; add (new JLabel ( " Hallo " ) ) ; setdefaultcloseoperation ( JFrame.EXIT_ON_CLOSE) ; s e t V i s i b l e ( true ) ; } } p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { SwingApp myapp = new SwingApp ( " E r s t e s Fenster " ) ; }

27 Grundsätzliche Entwicklungsschritte Der Entwurf einer grafischen Anwendung zerfällt in zwei Schritte: 1 Entwurf der grafischen Komponenten und deren Anordnung

28 Grundsätzliche Entwicklungsschritte Der Entwurf einer grafischen Anwendung zerfällt in zwei Schritte: 1 Entwurf der grafischen Komponenten und deren Anordnung 2 Implementierung der Eventbehandlung (z. B. Eingabe von Text, Klicken auf Schaltflächen etc.)

29 Toplevel-Elemente Swing kennt insgesamt drei Toplevel-Elemente: JFrame ein Fenster mit Rahmen und Titel Selbst geschriebene Anwendungen mit grafischer Oberfläche befinden sich meist innerhalb eines JFrame. Daher erbt die Hauptklasse einer Anwendung oft von JFrame.

30 Toplevel-Elemente Swing kennt insgesamt drei Toplevel-Elemente: JFrame ein Fenster mit Rahmen und Titel Selbst geschriebene Anwendungen mit grafischer Oberfläche befinden sich meist innerhalb eines JFrame. Daher erbt die Hauptklasse einer Anwendung oft von JFrame. JDialog für Meldungsfenster

31 Toplevel-Elemente Swing kennt insgesamt drei Toplevel-Elemente: JFrame ein Fenster mit Rahmen und Titel Selbst geschriebene Anwendungen mit grafischer Oberfläche befinden sich meist innerhalb eines JFrame. Daher erbt die Hauptklasse einer Anwendung oft von JFrame. JDialog für Meldungsfenster JApplet für Java-Applets, die innerhalb eines (Java-fähigen) Webbrowsers laufen.

32 Toplevel-Elemente Swing kennt insgesamt drei Toplevel-Elemente: JFrame ein Fenster mit Rahmen und Titel Selbst geschriebene Anwendungen mit grafischer Oberfläche befinden sich meist innerhalb eines JFrame. Daher erbt die Hauptklasse einer Anwendung oft von JFrame. JDialog für Meldungsfenster JApplet für Java-Applets, die innerhalb eines (Java-fähigen) Webbrowsers laufen.

33 Toplevel-Elemente Swing kennt insgesamt drei Toplevel-Elemente: JFrame ein Fenster mit Rahmen und Titel Selbst geschriebene Anwendungen mit grafischer Oberfläche befinden sich meist innerhalb eines JFrame. Daher erbt die Hauptklasse einer Anwendung oft von JFrame. JDialog für Meldungsfenster JApplet für Java-Applets, die innerhalb eines (Java-fähigen) Webbrowsers laufen. Innerhalb eines Toplevel-Fensters können beliebige Komponenten (ausser anderen Toplevel-Fenstern) angeordnet werden.

34 Das Hauptfenster Die Toplevel-Fenster (z. B. JFrame) bestehen aus einem Hauptfenster, dem so genannten Root Pane.

35 Das Hauptfenster Die Toplevel-Fenster (z. B. JFrame) bestehen aus einem Hauptfenster, dem so genannten Root Pane. Dieses besteht aus Layered Pane Hierin sind enthalten:

36 Das Hauptfenster Die Toplevel-Fenster (z. B. JFrame) bestehen aus einem Hauptfenster, dem so genannten Root Pane. Dieses besteht aus Layered Pane Hierin sind enthalten: Der eigentliche Inhalt des Fensters, das Content Pane.

37 Das Hauptfenster Die Toplevel-Fenster (z. B. JFrame) bestehen aus einem Hauptfenster, dem so genannten Root Pane. Dieses besteht aus Layered Pane Hierin sind enthalten: Der eigentliche Inhalt des Fensters, das Content Pane. Die Menu Bar.

38 Das Hauptfenster Die Toplevel-Fenster (z. B. JFrame) bestehen aus einem Hauptfenster, dem so genannten Root Pane. Dieses besteht aus Layered Pane Hierin sind enthalten: Der eigentliche Inhalt des Fensters, das Content Pane. Die Menu Bar. Glass Pane eine Art Glasscheibe über dem gesamten Fenster. Dieser kann verwendet werden, um Effekte über dem Fenster erscheinen zu lassen.

39 Schemadarstellung: Das Hauptfenster

40 Der Content-Pane Der Content Pane ist der Container, der Swing-Componenten (Labels, Buttons,... ) aufnimmt. Vor Java 5 konnten einem Toplevel-Container die Komponenten daher nicht direkt hinzu gefügt werden, und typischer Code sah so aus: JFrame myframe = new JFrame ( ) ; Container contentpane = myframe. getcontentpane ( ) ; contentpane. add (new JTextField ( ) ) ;

41 Der Content-Pane Der Content Pane ist der Container, der Swing-Componenten (Labels, Buttons,... ) aufnimmt. Vor Java 5 konnten einem Toplevel-Container die Komponenten daher nicht direkt hinzu gefügt werden, und typischer Code sah so aus: JFrame myframe = new JFrame ( ) ; Container contentpane = myframe. getcontentpane ( ) ; contentpane. add (new JTextField ( ) ) ; Seit Java 5 kann nun direkt mit add gearbeitet werden.

42 JPanel Ein JPanel ist ein allgemeiner Container, der ebenfalls andere Swing-Componenten (Labels, Buttons,... ) aufnimmt. Dieser Container kann dazu verwendet werden, Komponenten zu gruppieren sowie eigene, zusammengesetzte Komponenten zu erstellen. Von der Benutzung her ist es dem JFrame ähnlich, nur dass ein Panel keinen Rahmen besitzt.

43 Menüs In Fenstern von grafischen Anwendungen kennt man folgende Arten von Menüs: Menüleisten (am oberen Rand des Fensters)

44 Menüs In Fenstern von grafischen Anwendungen kennt man folgende Arten von Menüs: Menüleisten (am oberen Rand des Fensters) Symbolleisten

45 Menüs In Fenstern von grafischen Anwendungen kennt man folgende Arten von Menüs: Menüleisten (am oberen Rand des Fensters) Symbolleisten Popup-Menüs, die mit der rechten Maustaste geöffnet werden.

46 Menü-Klassen in Java

47 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem)

48 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem) Ankreuzfelder (Klasse JCheckBoxMenuItem)

49 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem) Ankreuzfelder (Klasse JCheckBoxMenuItem) Optionsfelder (Klasse JRadioButtonMenuItem)

50 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem) Ankreuzfelder (Klasse JCheckBoxMenuItem) Optionsfelder (Klasse JRadioButtonMenuItem) Untermenüs (Klasse JMenu), die wiederum o. a. Einträge und Trennlinien enthalten können.

51 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem) Ankreuzfelder (Klasse JCheckBoxMenuItem) Optionsfelder (Klasse JRadioButtonMenuItem) Untermenüs (Klasse JMenu), die wiederum o. a. Einträge und Trennlinien enthalten können.

52 Einträge in Menüs Jedes Menü kann folgende Einträge enthalten: Normale Einträge (Klasse JMenuItem) Ankreuzfelder (Klasse JCheckBoxMenuItem) Optionsfelder (Klasse JRadioButtonMenuItem) Untermenüs (Klasse JMenu), die wiederum o. a. Einträge und Trennlinien enthalten können. Für das Hinzufügen von Einträgen aller Art existiert die Methode add (...). Separator-Linien in Untermenüs werden mit addseparator() hinzu gefügt.

53 Einfaches Beispiel p u b l i c c l a s s MyApp extends JFrame { p u b l i c MyApp( ) { super ( "Meine Anwendung" ) ; s e t S i z e ( 3 0 0, ) ; s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; JMenuBar menubar = new JMenuBar ( ) ; JMenu menu ; JMenuItem item ; menu = new JMenu( " Datei " ) ; item = new JMenuItem ( " Öffnen " ) ; menu. add ( item ) ; item = new JMenuItem ( " S p e i c h e r n " ) ; menu. add ( item ) ; menubar. add (menu ) ;

54 Einfaches Beispiel (Forts.) menu = new JMenu( " H i l f e " ) ; item = new JMenuItem ( "Über d i e s e Anwendung" ) ; menu. add ( item ) ; menubar. add ( Box. c r e a t e H o r i z o n t a l G l u e ( ) ) ; menubar. add (menu ) ; setjmenubar ( menubar ) ; } s e t V i s i b l e ( t r u e ) ; } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

55 Die Klasse JMenu Die Klasse JMenu dient zum Erstellen eines Untermenüs, in dem neue Einträge vorhanden sein können.

56 Die Klasse JMenu Die Klasse JMenu dient zum Erstellen eines Untermenüs, in dem neue Einträge vorhanden sein können. Bei den meisten Anwendungen bestehn die Menü-Einträge im MenuBar selber aus solchen Untermenüs.

57 Die Klasse JMenu Die Klasse JMenu dient zum Erstellen eines Untermenüs, in dem neue Einträge vorhanden sein können. Bei den meisten Anwendungen bestehn die Menü-Einträge im MenuBar selber aus solchen Untermenüs. Dem Untermenü werden neue Elemente mit der Methode add(jmenuitem) hinzu gefügt. Es ist im Gegenzug auch möglich, Elemente aus einen Untermenü zu entfernen: remove(jmenuitem) für ein Objekt vom Typ JMenuItem,

58 Die Klasse JMenu Die Klasse JMenu dient zum Erstellen eines Untermenüs, in dem neue Einträge vorhanden sein können. Bei den meisten Anwendungen bestehn die Menü-Einträge im MenuBar selber aus solchen Untermenüs. Dem Untermenü werden neue Elemente mit der Methode add(jmenuitem) hinzu gefügt. Es ist im Gegenzug auch möglich, Elemente aus einen Untermenü zu entfernen: remove(jmenuitem) für ein Objekt vom Typ JMenuItem, remove(int) mit Angabe der Position (beginnend bei 0),

59 Die Klasse JMenu Die Klasse JMenu dient zum Erstellen eines Untermenüs, in dem neue Einträge vorhanden sein können. Bei den meisten Anwendungen bestehn die Menü-Einträge im MenuBar selber aus solchen Untermenüs. Dem Untermenü werden neue Elemente mit der Methode add(jmenuitem) hinzu gefügt. Es ist im Gegenzug auch möglich, Elemente aus einen Untermenü zu entfernen: remove(jmenuitem) für ein Objekt vom Typ JMenuItem, remove(int) mit Angabe der Position (beginnend bei 0), removeall() zum Entfernen aller Elemente.

60 Beispiel menu = new JMenu( " Datei " ) ; item = new JMenuItem ( " Öffnen " ) ; menu. add ( item ) ; item = new JMenuItem ( " S p e i c h e r n " ) ; menu. add ( item ) ; JMenu submenu = new JMenu( " L e t z t e Dateien " ) ; submenu. add ( " Datei 1" ) ; submenu. add ( " Datei 2" ) ; menu. add ( submenu ) ; menubar. add (menu ) ;

61 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips

62 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips Rahmen

63 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips Rahmen Einstellungen zum Look & Feel

64 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips Rahmen Einstellungen zum Look & Feel Unterstützung von Layout-Managern

65 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips Rahmen Einstellungen zum Look & Feel Unterstützung von Layout-Managern Behandlung von Tastatur-Ereignissen

66 Die Basisklass JComponent JComponent ist die Basisklasse aller Swing-Komponenten und unterstützt folgende Features: Tool Tips Rahmen Einstellungen zum Look & Feel Unterstützung von Layout-Managern Behandlung von Tastatur-Ereignissen Accessibility für Menschen mit Behinderungen

67 Tool Tips Tool Tips erscheinen, wenn die Maus länger auf einer Komponente verweilt, und sollen dem Nutzer eine Hilfe bieten.

68 Tool Tips Tool Tips erscheinen, wenn die Maus länger auf einer Komponente verweilt, und sollen dem Nutzer eine Hilfe bieten. Tool Tips können einfach mit der Methode settooltiptext(string) definiert werden.

69 Tool Tips Tool Tips erscheinen, wenn die Maus länger auf einer Komponente verweilt, und sollen dem Nutzer eine Hilfe bieten. Tool Tips können einfach mit der Methode settooltiptext(string) definiert werden. Beispiel: JTextField eingabe = new JTextField ( ) ; eingabe. settooltiptext ( "Text eingeben " ) ;

70 Rahmen Um Komponenten können Rahmen gemalt werden. Die einfachsten und wichtigsten sind: LineBorder eine einfache Linie

71 Rahmen Um Komponenten können Rahmen gemalt werden. Die einfachsten und wichtigsten sind: LineBorder eine einfache Linie EtchedBorder eine Linie mit 3D-Effekt, entweder vertieft oder erhöht

72 Rahmen Um Komponenten können Rahmen gemalt werden. Die einfachsten und wichtigsten sind: LineBorder eine einfache Linie EtchedBorder eine Linie mit 3D-Effekt, entweder vertieft oder erhöht BevelBorder die gesamte Komponente erscheint vertieft oder erhöht

73 Rahmen Um Komponenten können Rahmen gemalt werden. Die einfachsten und wichtigsten sind: LineBorder eine einfache Linie EtchedBorder eine Linie mit 3D-Effekt, entweder vertieft oder erhöht BevelBorder die gesamte Komponente erscheint vertieft oder erhöht EmptyBorder unsichtbarer Rahmen (für den aber Platz reserviert sein kann)

74 Beispiel JFrame frame = new JFrame ( ) ; frame. setlayout (new GridLayout ( 0, 1, 5, 5 ) ) ; JLabel l a b e l = new JLabel ( " Label 1" ) ; l a b e l. setborder ( BorderFactory. createlineborder ( Color. red ) ) ; frame. add ( l a b e l ) ; l a b e l = new JLabel ( " Label 2" ) ; l a b e l. setborder ( BorderFactory. createetchedborder ( EtchedBorder.RAIS frame. add ( l a b e l ) ; l a b e l = new JLabel ( " Label 3" ) ; l a b e l. setborder ( BorderFactory. createetchedborder ( EtchedBorder.LOWE frame. add ( l a b e l ) ; l a b e l = new JLabel ( " Label 4" ) ; l a b e l. setborder ( BorderFactory. createraisedbevelborder ( ) ) ; frame. add ( l a b e l ) ; l a b e l = new JLabel ( " Label 4" ) ; l a b e l. setborder ( BorderFactory. createloweredbevelborder ( ) ) ; frame. add ( l a b e l ) ; frame. pack ( ) ; frame. s e t V i s i b l e ( true ) ;

75 Look and Feel Zum Ändern des Look and Feel einer Anwendung kann man die Klasse UIManager verwenden: UIManager.setLookAndFeel(String)

76 Look and Feel Zum Ändern des Look and Feel einer Anwendung kann man die Klasse UIManager verwenden: UIManager.setLookAndFeel(String) Gueltige Parameter sind UIManager.getCrossPlatformLookAndFeel() UIManager.getSystemLookAndFeel()

77 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente

78 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente setmaximumsize(dimension) zur Angabe der maximalen Grösse

79 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente setmaximumsize(dimension) zur Angabe der maximalen Grösse setminimumsize(dimension) zur Angabe der minimalen Grösse

80 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente setmaximumsize(dimension) zur Angabe der maximalen Grösse setminimumsize(dimension) zur Angabe der minimalen Grösse

81 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente setmaximumsize(dimension) zur Angabe der maximalen Grösse setminimumsize(dimension) zur Angabe der minimalen Grösse Die Dimension kann hierbei durch new Dimension(x,y) angegeben werden.

82 Unterstützung von Layout-Managern Um den Layout-Manager bei der Anzeige der Komponenten zu unterstützen, existieren folgende Methoden: setpreferredsize(dimension) zur Angabe der optimalen Grösse einer Komponente setmaximumsize(dimension) zur Angabe der maximalen Grösse setminimumsize(dimension) zur Angabe der minimalen Grösse Die Dimension kann hierbei durch new Dimension(x,y) angegeben werden. Achtung: Der Layout-Manager muss sich nicht an die Vorgaben halten!

83 JLabel Konstruktoren/Methoden von JLabel: JLabel(String), JLabel(Icon), JLabel(String, int),... void settext(string) Text setzen String gettext() Text lesen void setdisplayedmnemonic(char) Tastatur-Shortcut setzen void setlabelfor(component) Komponente, an die der Shortcut weiter geleitet wird void sethorizontalalignment(int) hor. Ausrichtung Statische int-attribute in SwingConstants: LEFT, CENTER, RIGHT, LEADING, TRAILING

84 JTextField Konstruktoren/Methoden von JTextField: JTextField(), JTextField(String), JTextField(int),... void seteditable(boolean) void addactionlistener (...) void removeactionlistener(...) String gettext() String getselectedtext() Feld beschreibbar? Listener setzen Listener entfernen Text lesen Markierten Text lesen

85 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale Schaltflächen,

86 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale Schaltflächen, JCheckBox für Ankreuzfelder,

87 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale Schaltflächen, JCheckBox für Ankreuzfelder, JRadioButton für Optionsfelder (radio button)

88 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale Schaltflächen, JCheckBox für Ankreuzfelder, JRadioButton für Optionsfelder (radio button)

89 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale Schaltflächen, JCheckBox für Ankreuzfelder, JRadioButton für Optionsfelder (radio button) Diese Klassen erben von der Klasse AbstractButton.

90 Die Klasse AbstractButton Die Klasse AbstractButton bietet folgende wesentliche Methoden: void settext(string text) setzt den Text der Schaltfläche,

91 Die Klasse AbstractButton Die Klasse AbstractButton bietet folgende wesentliche Methoden: void settext(string text) setzt den Text der Schaltfläche, void seticon(icon icon) setzt das Icon der Schaltfläche,

92 Die Klasse AbstractButton Die Klasse AbstractButton bietet folgende wesentliche Methoden: void settext(string text) setzt den Text der Schaltfläche, void seticon(icon icon) setzt das Icon der Schaltfläche, void addactionlistener(...) registriert einen neuen ActionListener,

93 Die Klasse AbstractButton Die Klasse AbstractButton bietet folgende wesentliche Methoden: void settext(string text) setzt den Text der Schaltfläche, void seticon(icon icon) setzt das Icon der Schaltfläche, void addactionlistener(...) registriert einen neuen ActionListener, void setactioncommand(string command) definiert einen Text, der einem ausgelösten ActionEvent mitgegeben wird.

94 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand?

95 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand? In der Praxis ist ein ActionListener häufig bei mehreren Schaltflächen angemeldet, und in der Methode actionperformed soll je danach, welche Schaltfläche betätigt wurde, eine unterschiedliche Reaktion erfolgen.

96 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand? In der Praxis ist ein ActionListener häufig bei mehreren Schaltflächen angemeldet, und in der Methode actionperformed soll je danach, welche Schaltfläche betätigt wurde, eine unterschiedliche Reaktion erfolgen. Diese Unterscheidung kann erfolgen: Nach dem Quellobjekt des Events (e. getsource()) oder

97 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand? In der Praxis ist ein ActionListener häufig bei mehreren Schaltflächen angemeldet, und in der Methode actionperformed soll je danach, welche Schaltfläche betätigt wurde, eine unterschiedliche Reaktion erfolgen. Diese Unterscheidung kann erfolgen: Nach dem Quellobjekt des Events (e. getsource()) oder nach dem Aktions-Text des Events (e. getactioncommand()) Dieser Text besteht entweder aus:

98 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand? In der Praxis ist ein ActionListener häufig bei mehreren Schaltflächen angemeldet, und in der Methode actionperformed soll je danach, welche Schaltfläche betätigt wurde, eine unterschiedliche Reaktion erfolgen. Diese Unterscheidung kann erfolgen: Nach dem Quellobjekt des Events (e. getsource()) oder nach dem Aktions-Text des Events (e. getactioncommand()) Dieser Text besteht entweder aus: dem Text der Schaltfläche oder

99 getactioncommand/setactioncommand Wozu dient die Methode setactioncommand? In der Praxis ist ein ActionListener häufig bei mehreren Schaltflächen angemeldet, und in der Methode actionperformed soll je danach, welche Schaltfläche betätigt wurde, eine unterschiedliche Reaktion erfolgen. Diese Unterscheidung kann erfolgen: Nach dem Quellobjekt des Events (e. getsource()) oder nach dem Aktions-Text des Events (e. getactioncommand()) Dieser Text besteht entweder aus: dem Text der Schaltfläche oder dem durch setactioncommand(...) definierten Text der Schaltfläche.

100 Beispiel p u b l i c c l a s s MyApp extends JFrame implements A c t i o n L i s t e n e r { p u b l i c MyApp( ) throws H eadlessexception { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; JButton b = new JButton ( "OK" ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; b. setactioncommand ( "OK1" ) ; t h i s. add ( b ) ; b = new JButton ( "OK" ) ; b. setactioncommand ( "OK2" ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; b = new JButton ( "OK" ) ; b. setactioncommand ( "OK3" ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ;

101 Beispiel (Forts.) } t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) p u b l i c void actionperformed ( ActionEvent e ) { System. out. p r i n t l n ( e. getactioncommand ( ) ) ; } } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

102 Die Klasse JCheckBox JCheckBox dient der Darstellung von Kontrollfeldern zum Ankreuzen. Diese können selektiert oder deselektiert sein. Für die Änderung bzw. Abfrage des Status der Selektion existieren die Methoden boolean getselected() true, falls das Feld selektiert ist, sonst false

103 Die Klasse JCheckBox JCheckBox dient der Darstellung von Kontrollfeldern zum Ankreuzen. Diese können selektiert oder deselektiert sein. Für die Änderung bzw. Abfrage des Status der Selektion existieren die Methoden boolean getselected() true, falls das Feld selektiert ist, sonst false void setselected(boolean b) selektiert das Feld (true) bzw. deselektiert (false) es.

104 Die Klasse JCheckBox JCheckBox dient der Darstellung von Kontrollfeldern zum Ankreuzen. Diese können selektiert oder deselektiert sein. Für die Änderung bzw. Abfrage des Status der Selektion existieren die Methoden boolean getselected() true, falls das Feld selektiert ist, sonst false void setselected(boolean b) selektiert das Feld (true) bzw. deselektiert (false) es.

105 Die Klasse JCheckBox JCheckBox dient der Darstellung von Kontrollfeldern zum Ankreuzen. Diese können selektiert oder deselektiert sein. Für die Änderung bzw. Abfrage des Status der Selektion existieren die Methoden boolean getselected() true, falls das Feld selektiert ist, sonst false void setselected(boolean b) selektiert das Feld (true) bzw. deselektiert (false) es. Beim Selektieren oder Deselektieren des Kontrollfeldes wird ein ItemEvent ausgelöst, das bei einem mit additemlistener hinzugefuegten ItemListener der Methode itemstatechanged übergeben wird.

106 Beispiel p u b l i c c l a s s MyApp extends JFrame implements I t e m L i s t e n e r { p u b l i c MyApp( ) throws H eadlessexception { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; JCheckBox b = new JCheckBox ( " e i n s " ) ; b. a d d I t e m L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; b = new JCheckBox ( " zwei " ) ; b. a d d I t e m L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; b = new JCheckBox ( " d r e i " ) ; b. a d d I t e m L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; } t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) ;

107 Beispiel p u b l i c void itemstatechanged ( ItemEvent e ) { JCheckBox b = ( JCheckBox ) e. g e t S o u r c e ( ) ; S t r i n g v a l = e. getstatechange()==itemevent.selected? " s e l e k t i e r t " : " d e s e l e k t i e r t " ; System. out. p r i n t l n ( b. getactioncommand()+" : "+v a l ) ; } } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

108 Die Klasse JRadioButton Bei Optionsfeldern, so genannten Radio-Buttons, kann aus einer Gruppe von Feldern immer nur eines selektiert sein. Hierzu dient die Klasse JRadioButton.

109 Die Klasse JRadioButton Bei Optionsfeldern, so genannten Radio-Buttons, kann aus einer Gruppe von Feldern immer nur eines selektiert sein. Hierzu dient die Klasse JRadioButton. Sich gegenseitig ausschliessende Radio-Buttons werden hierbei einer ButtonGroup zugeordnet, die dafür sorgt, dass bei Auswahl eines Feldes alle anderen deselektiert werden. ButtonGroup g = new ButtonGroup ( ) ; JRadioButton b = new RadioButton ( " e i n s " ) ; g. add ( b ) ; Die Zuordnung zu einer ButtonGroup hat keinen Einfluss auf die grafische Anordnung der Felder.

110 Beispiel p u b l i c c l a s s MyApp extends JFrame implements A c t i o n L i s t e n e r { p u b l i c MyApp( ) { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; ButtonGroup buttons = new ButtonGroup ( ) ; JRadioButton b = new JRadioButton ( " e i n s " ) ; buttons. add ( b ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; b = new JRadioButton ( " zwei " ) ; buttons. add ( b ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; b = new JRadioButton ( " d r e i " ) ; buttons. add ( b ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ;

111 Beispiel (Forts.) } t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) p u b l i c void actionperformed ( ActionEvent e ) { System. out. p r i n t l n ( "Auswahl : "+e. getactioncommand ( ) ) ; } } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

112 Events und Listener in Java Wann immer in grafischen Anwendung in Java etwas passiert, sind daran zwei Dinge beteiligt: Events Diese beschreiben:

113 Events und Listener in Java Wann immer in grafischen Anwendung in Java etwas passiert, sind daran zwei Dinge beteiligt: Events Diese beschreiben: Art des Events

114 Events und Listener in Java Wann immer in grafischen Anwendung in Java etwas passiert, sind daran zwei Dinge beteiligt: Events Diese beschreiben: Art des Events Quelle

115 Events und Listener in Java Wann immer in grafischen Anwendung in Java etwas passiert, sind daran zwei Dinge beteiligt: Events Diese beschreiben: Art des Events Quelle spezifische Informationen (z. B. Maus-Koordinaten, gedrückte Shift- oder Alt-Taste)

116 Events und Listener in Java Wann immer in grafischen Anwendung in Java etwas passiert, sind daran zwei Dinge beteiligt: Events Diese beschreiben: Art des Events Quelle spezifische Informationen (z. B. Maus-Koordinaten, gedrückte Shift- oder Alt-Taste) Listener die auf Aktionen lauschen und diese Events geeignet auswerten.

117 Events Die in AWT und Swing auftretenden Events erben direkt oder indirekt von der Klasse AWTEvent.

118 Events Die in AWT und Swing auftretenden Events erben direkt oder indirekt von der Klasse AWTEvent. Konstruktor und Methoden: AWTEvent(Object source, int id) wobei source die Quelle des Events (dies kann z. B. eine Instanz von JButton oder JTextField sein) und id den Typ des Events kennzeichnet.

119 Events Die in AWT und Swing auftretenden Events erben direkt oder indirekt von der Klasse AWTEvent. Konstruktor und Methoden: AWTEvent(Object source, int id) wobei source die Quelle des Events (dies kann z. B. eine Instanz von JButton oder JTextField sein) und id den Typ des Events kennzeichnet. Object getsource() gibt die Quelle des Events zurück.

120 Events Die in AWT und Swing auftretenden Events erben direkt oder indirekt von der Klasse AWTEvent. Konstruktor und Methoden: AWTEvent(Object source, int id) wobei source die Quelle des Events (dies kann z. B. eine Instanz von JButton oder JTextField sein) und id den Typ des Events kennzeichnet. Object getsource() gibt die Quelle des Events zurück. int getid() gibt den Event-Typ zurück.

121 Die Klasse ActionEvent Direkte Aktionen, die mit einer Komponente verknüpft sind, können i. A. am Einfachsten über ActionEvents abgehandelt werden, die als Parameter der Methode actionperformed eines ActionListeners auftauchen.

122 Die Klasse ActionEvent Direkte Aktionen, die mit einer Komponente verknüpft sind, können i. A. am Einfachsten über ActionEvents abgehandelt werden, die als Parameter der Methode actionperformed eines ActionListeners auftauchen. Solche Aktionen können auf verschiedenen Wegen auftreten (Selektion eines Listenelements, Klicken auf einen Button, Eingabe von Enter in einem Textfeld), allerdings stecken im ActionEvent nur relativ wenig Informationen: die Quelle des Events (getsource() geerbt von AWTEvent) und evtl. bei der Auswahl gehaltene Shift-, CTRL- oder ALT-Tasten

123 Beispiel: Testen auf Shift- und ALT-Taste p u b l i c c l a s s MyApp extends JFrame implements A c t i o n L i s t e n e r { p u b l i c MyApp( ) throws H eadlessexception { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; JButton b = new JButton ( "OK" ) ; b. a d d A c t i o n L i s t e n e r ( t h i s ) ; t h i s. add ( b ) ; } t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) ;

124 Beispiel p u b l i c void actionperformed ( ActionEvent e ) { System. out. p r i n t l n ( " Button gedrückt " ) ; i f ( ( e. g e t M o d i f i e r s ( ) & ActionEvent.SHIFT_MASK)!= 0) System. out. p r i n t l n ( " mit S h i f t " ) ; } i f ( ( e. g e t M o d i f i e r s ( ) & ActionEvent.ALT_MASK)!= 0) { System. out. p r i n t l n ( " mit ALT" ) ; } } } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

125 Weitere Events Für komplexere Auswertungen von Events reicht ActionEvent nicht aus. Hier benötigt man speziellere Events, die auch mit speziellen Listener-Versionen behandelt werden. Dies sind z. B. MouseEvent Klick-Event der Maus, hierbei können Maustaste, Art der Aktion (Doppelklick) und Pixelposition der Aktion ausgewertet werden, wird den Methoden von MouseListener und MouseMotionListener als Parameter übergeben,

126 Weitere Events Für komplexere Auswertungen von Events reicht ActionEvent nicht aus. Hier benötigt man speziellere Events, die auch mit speziellen Listener-Versionen behandelt werden. Dies sind z. B. MouseEvent Klick-Event der Maus, hierbei können Maustaste, Art der Aktion (Doppelklick) und Pixelposition der Aktion ausgewertet werden, wird den Methoden von MouseListener und MouseMotionListener als Parameter übergeben, KeyEvent erlaubt die Auswertung der gedrückten Taste und evtl. Modifizierer, wird den Methoden von KeyListener übergeben,

127 Weitere Events Für komplexere Auswertungen von Events reicht ActionEvent nicht aus. Hier benötigt man speziellere Events, die auch mit speziellen Listener-Versionen behandelt werden. Dies sind z. B. MouseEvent Klick-Event der Maus, hierbei können Maustaste, Art der Aktion (Doppelklick) und Pixelposition der Aktion ausgewertet werden, wird den Methoden von MouseListener und MouseMotionListener als Parameter übergeben, KeyEvent erlaubt die Auswertung der gedrückten Taste und evtl. Modifizierer, wird den Methoden von KeyListener übergeben, WindowEvent für Aktionen mit dem Fenster (verkleinern, vergrössern, schliessen), wird den Methoden von WindowListener übergeben.

128 Beispiel In einer Anwendung soll ein Element aus einer Liste bei folgenden Ereignissen in ein Label übernommen werden: Klick auf eine Schaltfläche Übernehmen, Doppelklick auf das Listenelement, Eingabe von Enter in der Liste Nur das erste Ereignis kann über ActionListener implementiert werden, da bei den beiden anderen die Maus- bzw. Tastenaktion speziell ausgewertet werden muss.

129 Implementierung p u b l i c c l a s s MyApp extends JFrame implements A c t i o n L i s t e n e r, MouseListener, KeyListener { p r i v a t e JLabel output ; p r i v a t e J L i s t l i s t ; p r i v a t e JButton button ; p u b l i c MyApp( ) { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; S t r i n g [ ] items = {" Eins ", " Zwei ", " Drei ", " Vier " } ; l i s t = new J L i s t ( items ) ; l i s t. addmouselistener ( t h i s ) ; l i s t. addkeylistener ( t h i s ) ; add ( l i s t ) ; output = new JLabel ( " Keine Auswahl" ) ; add ( output ) ;

130 Implementierung (Forts.) button = new JButton ( " Übernehmen" ) ; button. a d d A c t i o n L i s t e n e r ( t h i s ) ; add ( button ) ; t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) ; p u b l i c void actionperformed ( ActionEvent e ) { output. settext ( ( S t r i n g ) l i s t. g e t S e l e c t e d V a l u e ( ) ) ; p u b l i c void mouseclicked ( MouseEvent e ) { i f ( e. getclickcount ()==2) { actionperformed ( new ActionEvent ( e. g e t S o u r c e ( ), ActionEvent.ACTION_PERFORMED, n u l l ) ) ; } }

131 Implementierung p u b l i c void keytyped ( KeyEvent e ) { i f ( e. getkeychar()==keyevent.vk_enter) { actionperformed ( new ActionEvent ( e. g e t S o u r c e ( ), ActionEvent.ACTION_PERFORMED, n u l l ) ) ; } p u b l i c void mouseentered ( MouseEvent arg0 ) p u b l i c void keypressed ( KeyEvent arg0 ) p u b l i c void keyreleased ( KeyEvent arg0 ) p u b l i c void mouseexited ( MouseEvent arg0 ) p u b l i c void mousepressed ( MouseEvent arg0 ) {}

132 Implementierung p u b l i c void mousereleased ( MouseEvent arg0 ) {} } p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { MyApp app = new MyApp ( ) ; }

133 Adapterklassen für Events An dem vorigen Beispiel mit der Behandlung eines Tastaturund eines Maus-Ereignisses wird ein Problem bei der Implementierung von speziellen Listener-Varianten deutlich: Es müssen viele Methoden implementiert werden, auch wenn nur für wenige Aktionen tatsächlich eine Implementation erfolgen soll. Dies wird schnell unübersichtlich!

134 Adapterklassen für Events An dem vorigen Beispiel mit der Behandlung eines Tastaturund eines Maus-Ereignisses wird ein Problem bei der Implementierung von speziellen Listener-Varianten deutlich: Es müssen viele Methoden implementiert werden, auch wenn nur für wenige Aktionen tatsächlich eine Implementation erfolgen soll. Dies wird schnell unübersichtlich! Aus diesem Grund existieren für komplexe Events Adapterklassen, die das entsprechende Listener-Interface (mit leeren Methoden) implementieren: MouseListener MouseAdapter, MouseMotionListener MouseMotionAdapter, KeyListener KeyAdapter, WindowListener WindowAdapter

135 Neue Version des Beispiels mit Inneren Klassen Nun soll das Beispiel neu implementiert werden, indem für das Maus- bzw. Tastatur-Ereignis neue Klassen entwickelt werden, die von den entsprechenden Adaptern erben.

136 Neue Version des Beispiels mit Inneren Klassen Nun soll das Beispiel neu implementiert werden, indem für das Maus- bzw. Tastatur-Ereignis neue Klassen entwickelt werden, die von den entsprechenden Adaptern erben. Da diese Klassen nur innerhalb der Anwendungsklasse selber benötigt werden, ist es hier möglich, sich den Aufwand normaler Klassen in eigenen Quelltext-Dateien zu ersparen. Stattdessen können diese Klassen innerhalb der Anwendungklasse definiert werden, die dann nur innerhalb dieser Anwendungsklasse bekannt sind. Hierdurch bleibt die Struktur des Java-Projektes übersichtlicher.

137 Neue Version des Beispiels mit Inneren Klassen Nun soll das Beispiel neu implementiert werden, indem für das Maus- bzw. Tastatur-Ereignis neue Klassen entwickelt werden, die von den entsprechenden Adaptern erben. Da diese Klassen nur innerhalb der Anwendungsklasse selber benötigt werden, ist es hier möglich, sich den Aufwand normaler Klassen in eigenen Quelltext-Dateien zu ersparen. Stattdessen können diese Klassen innerhalb der Anwendungklasse definiert werden, die dann nur innerhalb dieser Anwendungsklasse bekannt sind. Hierdurch bleibt die Struktur des Java-Projektes übersichtlicher. Solche Klassendefinitionen innerhalb anderer Klassen nennt man Innere Klassen.

138 Implementierung p u b l i c c l a s s MyApp extends JFrame implements A c t i o n L i s t e n e r { p r i v a t e JLabel output ; p r i v a t e J L i s t l i s t ; p r i v a t e JButton button ; p u b l i c MyApp( ) { super ( "Meine Anwendung" ) ; t h i s. setlayout ( new GridLayout ( 0, 1 ) ) ; t h i s. s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame.EXIT_ON_CLOSE) ; S t r i n g [ ] items = {" Eins ", " Zwei ", " Drei ", " Vier " } ; l i s t = new J L i s t ( items ) ; l i s t. addmouselistener ( new MyMouseAdapter ( ) ) ; l i s t. addkeylistener ( new MyKeyAdapter ( ) ) ; add ( l i s t ) ;

139 Implementierung (Forts.) output = new JLabel ( " Keine Auswahl" ) ; add ( output ) ; button = new JButton ( " Übernehmen" ) ; button. a d d A c t i o n L i s t e n e r ( t h i s ) ; add ( button ) ; } t h i s. pack ( ) ; t h i s. s e t V i s i b l e ( t r u e ) p u b l i c void actionperformed ( ActionEvent e ) { output. settext ( ( S t r i n g ) l i s t. g e t S e l e c t e d V a l u e ( ) ) ; }

140 Implementierung (Forts.) c l a s s MyMouseAdapter extends MouseAdapter p u b l i c void mouseclicked ( MouseEvent e ) { i f ( e. getclickcount ()==2) { actionperformed ( new ActionEvent ( e. g e t S o u r c e ( ) ActionEvent.ACTION_PERFORMED, "" ) ) ; } } }

141 Implementierung (Forts.) } c l a s s MyKeyAdapter extends KeyAdapter { p u b l i c MyKeyAdapter ( ) { p u b l i c void keytyped ( KeyEvent e ) { i f ( e. getkeychar()==keyevent.vk_enter) { actionperformed ( new ActionEvent ( e. g e t S o u r c e ( ) ActionEvent.ACTION_PERFORMED, "" ) ) ; } } }

AWT. Einfache AWT-Anwendung. Swing. Vorlesung 1. Handout S. 2. import java. awt. * ;

AWT. Einfache AWT-Anwendung. Swing. Vorlesung 1. Handout S. 2. import java. awt. * ; Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 56 Grafische Benutzeroberflächen Container Menüs JComponent JLabel/JTextField Buttons Events und Listener 2 / 56 Einführung:

Mehr

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale

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

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

Programmieren II. Menü-Klassen in Java. Menüs. Menüs. Action. Dr. Klaus Höppner. GridBagLayout. Hochschule Darmstadt SS 2008

Programmieren II. Menü-Klassen in Java. Menüs. Menüs. Action. Dr. Klaus Höppner. GridBagLayout. Hochschule Darmstadt SS 2008 Programmieren II Menüs Dr. Klaus Höppner Action Hochschule Darmstadt SS 2008 GridBagLayout 1 / 30 2 / 30 Menüs Menü-Klassen in Java In Fenstern von grafischen Anwendungen kennt man folgende Arten von Menüs:

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

GUI Programmierung mit javax.swing

GUI Programmierung mit javax.swing java.awt Swing Komponenten Layout Manager Ausblick GUI Programmierung mit University basierend auf Folien von Dr. Beatrice Amrhein (Bern), 19. Juni 2006 java.awt Swing Komponenten Layout Manager Ausblick

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

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

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

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

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

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

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey Kap. 36 SWING: Menüs und weitere SWING-Container Seán Dempsey Grundlagen von Menüs Hauptklasse: JMenuBar SWING- Entsprechung der AWT-Menüklasse MenuBar JMenuBar Menüleiste (JMenuBar) enthält Menüs (JMenu)

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

Menüs Action GridBagLayout. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 31

Menüs Action GridBagLayout. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 31 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 31 Menüs Action GridBagLayout 2 / 31 Menüs In Fenstern von grafischen Anwendungen kennt man folgende Arten von Menüs: Menüleisten

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

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,

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

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

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 37 JList JTable Layout-Manager GridBagLayout 2 / 37 Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

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

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

Einführung in die Programmierung für NF. Übung 08 Einführung in die Programmierung für NF Übung 08 Inhalt Eventbehandlung in Java Swing Einführung in die Programmierung für NF Übung 08 2 Eventbehandlung in Java Swing Wir haben bereits einige grafische

Mehr

Kapitel 7: Ereignis-basierte Kommunikation

Kapitel 7: Ereignis-basierte Kommunikation Liste P: Programmieren mit Java WS 2001/2002, Prof. Dr. V. Turau, FH Wiesbaden Kapitel 7: Ereignis-basierte Kommunikation Folie 125 : Grafische Oberflächen Eine grafische Oberfläche besteht aus Komponenten.

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

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

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

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt WS 2006/2007 1 / 15 Einführung: Grafische Benutzeroberflächen 2 / 15 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 5. Grafische Userinterfaces Christian Scheible Institut für Maschinelle Sprachverarbeitung 31. Juli 2009 Christian Scheible Java für Computerlinguisten 31. Juli 2009 1 / 33

Mehr

...erinnern Sie sich? oopjs4b / kwhbkd4r

...erinnern Sie sich? oopjs4b / kwhbkd4r ...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

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

Auszug aus der Klassenstruktur

Auszug aus der Klassenstruktur Swing javax.swing Auszug aus der Klassenstruktur JComponent AbstractButton JColorChooser JComboBox JInternalFrame JLabel JList JPanel JTable JTextComponent JTree JToolBar JToolTip JToggleButton JButton

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

Mehr

Swing : Komponeneten I (Teil 1) Was ist Swing?

Swing : Komponeneten I (Teil 1) Was ist Swing? Was ist Swing? 1 Unterschied zu AWT (Abstract window Toolkit) Zusätzliche Komponenten von Swing,die zu Oberflächenerzeugung genutzt werden können: Keyboard Accelerators, also Tastenkombination zur Steuerung

Mehr

Softwarepraktikum: Enigma

Softwarepraktikum: Enigma Softwarepraktikum: Enigma Martin Steffen Sommersemester 2003 Abschnitt I GUI Inhalt: Übersicht gui-pakete in Java: AWT, Swing Komponenten und Behälter Layout Ereignisse und Ereignisbehandlung Ereignismodell

Mehr

Anwendungen mit GUI. INE2, Mittwoch / TH561 M. Thaler, Office TG208.

Anwendungen mit GUI. INE2, Mittwoch / TH561 M. Thaler, Office TG208. Anwendungen mit GUI INE2, Mittwoch 8.00-9.35/ TH561 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Anwendungen meist Graphische Schnittstellen wie solche Schnittstellen

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

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

Aufbau einer typischen Java-Datei

Aufbau einer typischen Java-Datei Aufbau einer typischen Java-Datei 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [package mein.paket;] [import

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

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

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Toolbar 1. JToolBar 2. Menü 1. JMenuBar 2. JMenu 3. JMenuItem 4. KeyStroke 5. Beispiel JMenuDemo1 6. JCheckBoxMenuItem 7. JRadioButtonMenuItem 8. Beispiel JMenuDemo2 9. JPopupMenu 10. Beispiel

Mehr

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: graphical user interface, GUI) in Java GUI-Programmierung in Java GUI-Programmierung in Java 2002 Prof. Dr. Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

Java GUI Entwicklung mit Swing

Java GUI Entwicklung mit Swing Seminarunterlage Version: 5.03 Version 5.03 vom 13. Februar 2014 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical

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

Programmieren mit Swing

Programmieren mit Swing Jürgen Schlierf Rudolf Weber Programmieren mit Swing Einfuhrung in die Programmierung mit den Swing-Klassen in Java 2 HANSER Carl Hanser Verlag München Wien Inhaltsverzeichnis 1 Einleitung 1 1.1 Von Java

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

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical

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

JAVA Oberflächen mit Swing

JAVA Oberflächen mit Swing JAVA Oberflächen mit Swing Grafik von http://javafx.com 168 168 AGENDA Grundlagen GUI Swing JavaFX 169 169 GRAPHISCHE BENUTZEROBERFLÄCHEN (1) AWT = Abstract Window Toolkit Verwendet die jeweiligen GUI-Komponenten

Mehr

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.06.07 G. Bohlender (IANM UNI Karlsruhe) Swing 27.06.07 1 / 10 Übersicht 1 Einführendes

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

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

Swing Grundlagen. Andre Eichmann

Swing Grundlagen. Andre Eichmann Swing Grundlagen Andre Eichmann Inhaltsverzeichnis Swing: Grundlagen - Einleitung - Ein einleitendes Beispiel Swing: Container und Menüs - Hauptfenster - Menüs Swing: Grundlagen Nachteile von AWT: - Schwierig,

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

Inhaltsverzeichnis Einleitung...1 Die Begleit-CD zu diesem Buch...5 Erweiterungen für Java Ereignisse...15

Inhaltsverzeichnis Einleitung...1 Die Begleit-CD zu diesem Buch...5 Erweiterungen für Java Ereignisse...15 Inhaltsverzeichnis 1 Einleitung...1 1.1 Von Java bis Swing?...1 1.2 Wer sind Sie?...1 1.3 Was dieses Buch nicht ist...2 1.4 Die Gliederung dieses Buches...2 1.5 Konventionen...2 1.6 Zeit, anzufangen...4

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

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

04 - Actions. Actions

04 - Actions. Actions Actions Motivation!In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt.!häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch

Mehr

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2012 1 / 19 Rückblick Themen Erste GUI-Anwendung Praktikum 2 / 19 Inhalt von Teil 1 Algorithmen Elementare Datentypen Operatoren Bedingte

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

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 20 Rückblick Themen Erste GUI-Anwendung Praktikum 2 / 20 Inhalt von Teil 1 Algorithmen Elementare Datentypen Operatoren Bedingte

Mehr

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.

Mehr

Grafische Benutzeroberflächen mit Swing

Grafische Benutzeroberflächen mit Swing Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,

Mehr

Swing :Komponenten I (Teil 2)

Swing :Komponenten I (Teil 2) l Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen l Swing stellt eine Menge von Klassen zur Verfügung l Swing wurde

Mehr

JAVA Oberflächen mit Swing

JAVA Oberflächen mit Swing JAVA Oberflächen mit Swing Grafik von http://javafx.com 159 AGENDA Grundlagen GUI Swing JavaFX 160 GRAPHISCHE BENUTZEROBERFLÄCHEN (1) AWT = Abstract Window Toolkit Verwendet die jeweiligen GUI-Komponenten

Mehr

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1 GUI-Programmierung in Java GUI-Programmierung in in Java 2002 Prof Dr Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: : Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

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

Returns the timestamp of when this event occurred.

Returns the timestamp of when this event occurred. Aufgabe 7 (1 Punkt) Schreiben Sie eine Oberfläche mit 50 Knöpfen, wobei jeweils im Text des Knopfes steht, wie oft dieser Knopf gedrückt wurde, dabei sollen Sie keine 50 Variablen, Arrays oder ähnliches

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

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Heinrich Hußmann Ludwig-Maximilians-Universität München Sommersemester 2003 Ludwig-Maximilians-Universität München Prof. Hußmann

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 Events in Java Graphische Anwendungen werden über Events gesteuert.

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

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:

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

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

Einführung in Swing. Graphical User Interface

Einführung in Swing. Graphical User Interface Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern, Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader 2.

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

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

Mensch-Maschine-Interaktion

Mensch-Maschine-Interaktion Universität Dortmund, Fachbereich Informatik Peter Bollweg, OH16 E08, bollweg@ls7.cs.uni-dortmund.de, 6328 Constantin Timm, OH16 E06, timm@ls12.cs.uni-dortmund.de, 6144 Christian Asche Dortmund, 19. Oktober

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

Einführung in Java, Teil 6

Einführung in Java, Teil 6 Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Einführung in Java, Teil 6 Angepasst auf Swing von Daniel Huson Vorlesung Informatik I, 6.12.2005

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

14 Swing-Komponenten. 2009 2014, Prof. Dr. D. Ratz

14 Swing-Komponenten. 2009 2014, Prof. Dr. D. Ratz 14 Swing-Komponenten 2009 2014, Prof. Dr. D. Ratz 14.1 Typische Komponenten für Benutzerschnittstellen Das Abstract Window Toolkit (AWT) liefert bereits viele Möglichkeiten für Komponenten für graphische

Mehr

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar 2010. Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar 2010. Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60 Programmierkurs 11. Vorlesung Sven Mallach Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 13. Januar 2010 1/ 60 Klausuren 1. Termin: Di. 23.02.2010 2. Termin: Do. 18.03.2010 Uhrzeit: In beiden

Mehr

Arbeitsblatt 5 EAD II NetBeans

Arbeitsblatt 5 EAD II NetBeans Arbeitsblatt 5 EAD II NetBeans Graphische Oberfläche für Uhrenanzeige mit NetBeans Für die Einführung in die Verwendung von NetBeans erstellen wir die graphische Oberfläche für die Uhr nun mit NetBeans.

Mehr

Ausgewählte Implementierungsprobleme

Ausgewählte Implementierungsprobleme Ausgewählte Implementierungsprobleme Rebecca Tiarks 15. Januar 2009 1 / 56 Inhaltsverzeichnis 1 2 / 56 AWT grafische Benutzeroberfläche (GUI) erste API von Sun AWT bietet GUI-Komponenten, Operationen zum

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

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans) Oliver Brinkmann oliver.brinkmann@smail.fh-koeln.de Java Swing-Applikationen & JApplets (mit NetBeans) 1 Einführung in NetBeans Vorstellung: AWT-/Java-Swing-Paket JApplet Ereignisverarbeitung mit NetBeans

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