Java GUI Entwicklung mit Swing
Transcrição
Java GUI Entwicklung mit Swing
Java GUI Entwicklung mit Swing Seminarunterlage Version: 5.03 Copyright ORDIX AG Version 5.03 vom 13. Februar 2014 Dieses Dokument wird durch die ORDIX AG veröffentlicht. Copyright ORDIX AG. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der ORDIX AG weitergegeben oder benutzt werden. Adressen der ORDIX AG Die ORDIX AG besitzt folgende Geschäftsstellen ORDIX AG Westernmauer 12-16 D-33098 Paderborn Tel.: (+49) 0 52 51 / 10 63 - 0 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 – 00 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 – 00 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 – 0 Fax.: (+49) 01 80 / 1 67 34 90 ORDIX AG Marlene-Dietrich-Str. 5 D-89231 Neu-Ulm Tel.: (+49) 07 31 / 9 85 88 – 550 Fax.: (+49) 01 80 / 1 67 34 90 Internet: http://www.ordix.de Email: [email protected] Seite 2 Java GUI Entwicklung mit Swing Version: 5.03 Copyright ORDIX AG Inhaltsverzeichnis Inhaltsverzeichnis 1 Entstehung von Swing und Unterschiede zum Awt ................................................................ 7 1.1 1.2 1.3 1.4 2 Grundlegende Swing-Container und Komponenten ............................................................. 12 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46 3 Historie der Grafikbibliotheken in Java ............................................................................... 8 Awt - Paket java.awt ............................................................................................................ 9 Swing - Paket javax.swing ............................................................................................... 10 Unterschiede zwischen Swing und Awt ............................................................................ 11 Container und Komponenten ............................................................................................ 13 Beispiel für Container mit Komponenten .......................................................................... 14 Unterteilung der Container ................................................................................................ 15 Das contentPane ........................................................................................................... 16 Die Klasse JFrame ........................................................................................................... 17 JFrame()-Konstruktoren ................................................................................................. 18 setTitle()-Methode ..................................................................................................... 19 Fenster anzeigen .............................................................................................................. 20 pack()- und setSize()-Methoden ............................................................................... 21 setVisible()-Methode ................................................................................................. 23 setDefaultCloseOperation()-Methode ................................................................... 24 Window-EventWindow-Event ............................................................................................ 25 Anwendung schließen ....................................................................................................... 26 processWindowEvent()-Methode ................................................................................ 27 Ein einfaches Fenster ....................................................................................................... 28 Die Klasse JDialog ............................................................................................................ 29 JDialog()-Konstruktoren ............................................................................................... 30 Ein einfacher Dialog .......................................................................................................... 32 Die Klasse JPanel ........................................................................................................... 33 JPanel()-Konstruktoren ................................................................................................. 34 JPanel hinzufügen ........................................................................................................... 35 Komponenten hinzufügen ................................................................................................. 36 Atomare Komponenten ..................................................................................................... 37 Ein grafischer Überblick .................................................................................................... 39 Die Klasse JLabel ........................................................................................................... 40 JLabel()-Konstruktoren ................................................................................................. 41 Inhalt eines JLabel ändern / abfragen ............................................................................... 43 Aussehen eines JLabel ändern / abfragen ....................................................................... 44 Swing-Konstanten zur Beschreibung der Ausrichtung ..................................................... 45 Die Klasse JTextField .................................................................................................. 46 JTextField()-Konstruktoren ......................................................................................... 47 Inhalt eines JTextField ändern / abfragen.................................................................... 48 Einige Methoden eines JTextField ............................................................................... 49 Schaltflächen ..................................................................................................................... 50 Methoden von JComponent/ AbstractButton ............................................................ 51 Methoden der Klasse AbstractButton ......................................................................... 52 Beispiel zu den Methoden ................................................................................................. 54 Die Klasse JButton()und ihre Konstruktoren ................................................................ 56 Einige nützliche Methoden der Klasse JButton() ......................................................... 57 Die Klassen JRadioButton() und JCheckBox() ........................................................ 58 JRadioButton() und JCheckBox()-Konstruktoren .................................................... 59 Die Klasse ButtonGroup() ............................................................................................ 61 Die Klasse JComboBox() ................................................................................................ 62 JComboBox()-Konstruktoren ........................................................................................... 63 Methoden der Klasse JComboBox ................................................................................... 64 Beispiel für eine JComboBox ............................................................................................ 68 Der Layout Manager .................................................................................................................. 69 Version: 5.03 Copyright ORDIX AG Seite 3 Java GUI Entwicklung mit Swing Inhaltsverzeichnis 3.1 3.2 3.3 3.4 3.5 3.6 4 Event Handling - Es tut sich was... .......................................................................................... 86 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 5 Einfaches Fenster mit Swing ohne Event Handling .......................................................... 87 Fenster schließen .............................................................................................................. 88 Event-Modell ..................................................................................................................... 89 Events, Listener und Methoden ........................................................................................ 91 Registrieren als Event-Listener ......................................................................................... 93 Interfaces........................................................................................................................... 94 Beispiel Fenster schließen mit einem Interface ................................................................ 95 Adapterklassen.................................................................................................................. 98 Beispiel Fenster schließen mit normaler Adapterklasse ................................................... 99 Beispiel Fenster schließen mit lokaler Adapterklasse .................................................... 101 Beispiel Fenster schließen mit anonymer Adapterklasse ............................................... 102 Implementierung mehrerer Event-Listener ..................................................................... 103 Event-Listener für zwei Buttons - erste Variante............................................................. 104 Event-Listener für zwei Buttons - zweite Variante .......................................................... 105 Threads und Swing-Komponenten ................................................................................. 106 Klasse SwingUtilities ....................................................................................................... 107 Beispiel invokeAndWait(Runnable doRun) ..................................................................... 108 Klasse SwingWorker ....................................................................................................... 111 Zusammenfassung .......................................................................................................... 116 Das Model-View-Controller Entwurfsmuster ........................................................................ 117 5.1 5.2 6 Der Layout-Manager ......................................................................................................... 70 Vor – und Nachteile von Layout-Managern ...................................................................... 71 Layout-Manager zuweisen und abfragen .......................................................................... 72 Das BorderLayout ......................................................................................................... 73 3.4.1 Horizontaler und Vertikaler Abstand .................................................................... 74 3.4.2 Grafik zum BorderLayout ................................................................................. 75 3.4.3 Beispiel zum BorderLayout .............................................................................. 76 Das FlowLayout ............................................................................................................. 77 3.5.1 Ausrichtung im FlowLayout ............................................................................... 78 3.5.2 Grafiken zum FlowLayout ................................................................................. 79 3.5.3 Beispiel zum FlowLayout...................................................................................... 80 Das GridLayout ............................................................................................................. 81 3.6.1 Spalten- und Zeilenanzahl.................................................................................... 83 3.6.2 Grafiken zum GridLayout ................................................................................. 84 3.6.3 Beispiel zum GridLayout .................................................................................. 85 Was ist das Model-View-Controller Entwurfsmuster? ..................................................... 118 Swing Komponenten-Architektur und MVC .................................................................... 121 5.2.1 JComponent ....................................................................................................... 122 5.2.2 View-Controller-Klassen ..................................................................................... 123 5.2.3 Anwendungsbeispiele ........................................................................................ 128 5.2.4 Beobachter und Beobachtete ............................................................................. 133 5.2.5 Austauschbares Look&Feel ............................................................................... 138 Komplexe Swing-Container .................................................................................................... 139 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Überblick ......................................................................................................................... 140 Die Klasse JSplitPane() ............................................................................................ 141 Positionierung in einer JSplitPane() ........................................................................... 142 Einige nützliche Methoden zur JSplitPane ................................................................. 144 Grafik zur JSplitPane() .............................................................................................. 145 Beispiel zur JSplitPane() ........................................................................................... 146 Die Klasse JTabbedPane() .......................................................................................... 147 6.7.1 Hinzufügen neuer „Karteikarten“ ........................................................................ 148 6.7.2 Weitere Methoden zur JTabbedPane() ........................................................... 150 6.7.3 Grafik zur JTabbedPane() .................................................................................. 152 6.7.4 Beispiel zur JTabbedPane() ............................................................................... 153 Seite 4 Java GUI Entwicklung mit Swing Version: 5.03 Copyright ORDIX AG Inhaltsverzeichnis 6.8 Die Klasse JTree() ....................................................................................................... 155 6.8.1 Grafik zu JTree() ............................................................................................. 156 6.9 Die Klasse JToolbar() ................................................................................................ 157 6.9.1 JToolBar() –Konstruktoren ............................................................................ 158 6.9.2 Hinzufügen von Elementen zur JToolBar() ................................................... 159 6.9.3 Grafik zur JToolBar() ..................................................................................... 160 6.9.4 Beispiel zur JToolBar() .................................................................................. 161 6.10 Die Klasse JOptionPane() .......................................................................................... 163 6.10.1 showXxxxDialog()-Methoden ............................................................................. 164 6.10.2 Grafik zur JOptionPane().................................................................................... 165 6.10.3 Einige wichtige Parameter.................................................................................. 166 6.10.4 Rückgabewerte einiger Dialoge ......................................................................... 168 6.10.5 Beispiel für die Methode showMessageDialog() .......................................... 169 6.10.6 Beispiel für die Methode showConfirmDialog() .......................................... 170 6.10.7 Beispiel für die Methode showInputDialog() ............................................... 171 6.11 6.27 Die Klasse JFileChooser() ................................................................................ 172 6.11.1 Grafik zu JFileChooser .................................................................................. 173 6.11.2 Einige nützliche Methoden ................................................................................. 174 7 LayoutManger: GridBagLayout .............................................................................................. 175 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 8 LayoutManager: GroupLayout ............................................................................................... 191 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19 9 Das GridBagLayout ......................................................................................................... 176 gridx und gridy ................................................................................................................ 177 gridwidth und gridheight ...................................................................................... 178 fill ................................................................................................................................ 179 ipadx, ipady und insets............................................................................................ 180 anchor ........................................................................................................................... 181 weightx und weighty .................................................................................................. 182 Anlegen eines GridBagConstraints ......................................................................... 183 Setzen der Constraints .................................................................................................... 184 Informationen zu den folgenden Grafiken ....................................................................... 186 Grafiken zum GridBagLayout ...................................................................................... 187 Beispiel zum GridBagLayout (Rahmen)...................................................................... 188 Beispiel Initialisierung der Schaltflächen ......................................................................... 189 GroupLayout.................................................................................................................... 192 Prinzip des GroupLayout .............................................................................................. 193 Beispiel mit drei Komponenten ....................................................................................... 194 LayoutGroups .............................................................................................................. 195 Layout entlang der Achsen ............................................................................................. 196 Beispiel mit vier Komponenten........................................................................................ 197 Erzeugen einer parallelen Gruppe .................................................................................. 199 Ausrichtung innerhalb paralleler Gruppen ...................................................................... 200 Erzeugen einer sequentiellen Gruppe ............................................................................ 201 Komponenten zu einer Gruppe hinzufügen .................................................................... 202 Gruppen zu einer Gruppe hinzufügen ............................................................................. 203 Größe/Größenanpassung der Komponenten ................................................................. 204 Beispiel Größenanpassung ............................................................................................. 205 Lücken(gaps)................................................................................................................... 206 Automatische Lücken konfigurieren ................................................................................ 207 Eigene Lücken erzeugen ................................................................................................ 208 Arten von Lücken ............................................................................................................ 210 linkSize(int axis, Component...components) ................................................................... 211 GUI zur Laufzeit anpassen.............................................................................................. 212 MVC und JTable....................................................................................................................... 215 9.1 9.2 Allgemeines ..................................................................................................................... 216 Schnell und Einfach ........................................................................................................ 218 Version: 5.03 Copyright ORDIX AG Seite 5 Java GUI Entwicklung mit Swing Inhaltsverzeichnis 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 10 JTable-Einstellungen .................................................................................................... 220 Tabellenmodell ................................................................................................................ 222 Schritt für Schritt zum eigenen Tabellenmodell .............................................................. 227 Optionale weitere Schritte ............................................................................................... 231 Editieren einzelner Felder ............................................................................................... 234 Änderungen am Renderer ............................................................................................... 235 Änderung des Zellen-Editors........................................................................................... 236 JTree ............................................................................................................................... 237 Look & Feel, Internationalisierung ........................................................................................ 238 10.1 Look&Feel ....................................................................................................................... 239 10.1.1 Beispiel Look&Feel ............................................................................................. 240 10.1.2 Look&Feel setzen ............................................................................................... 241 10.1.3 Beispiel Look&Feel setzen ................................................................................. 242 10.1.4 Parameter für die setLookAndFeel()-Methode ................................................... 243 10.1.5 Wahl des Look&Feel durch den UIManager .................................................... 245 10.1.6 Look&Feel zur Laufzeit ändern .......................................................................... 246 10.1.7 Beispiel Look&Feel zur Laufzeit ändern............................................................. 247 10.2 Internationalisierung (Locale) .......................................................................................... 248 10.2.1 Beispiel Anwendung ohne Internationalisierung ................................................ 249 10.2.2 Beispiel Anwendung mit Internationalisierung ................................................... 250 10.2.3 Schritte zur Internationalisierung ........................................................................ 252 10.2.4 Sprachcodes ...................................................................................................... 255 10.2.5 Landescodes ...................................................................................................... 256 10.2.6 Verfügbare Locale bestimmen ........................................................................... 257 10.2.7 Zahlen................................................................................................................. 258 10.2.8 Beträge ............................................................................................................... 260 10.2.9 Datum ................................................................................................................. 262 10.2.10 Vordefinierte Datumsformate ............................................................................. 264 10.2.11 Zeit...................................................................................................................... 265 10.2.12 Vordefinierte Zeitformate .................................................................................... 267 10.2.13 Datum und Zeit gleichzeitig ................................................................................ 268 10.3 Zusammenfassung .......................................................................................................... 270 Seite 6 Java GUI Entwicklung mit Swing Version: 5.03 Copyright ORDIX AG