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. Vor- und Nachteile von Swing 6. Errungenschaften des Swing: 7. Beispielprogramm „Hauptfenster“ - Look-And-Feel 8. JFrame 9. JWindow 10. JDialog 11. JoptionPane 12. JApplet 02.Juni 2008 Java: "Einführung in SWING" 2 1.Kurze Einleitung • Grafische Benutzeroberflächen (Graphical User Interface: GUI) sind ein wichtiger Bestandteil von Software-Produkten • Ab Version JDK 1.0 wurde die Grafikbibliothek mit dem Namen AWT (Abstract Windowing Toolkit) zur Verfügung gestellt • Ab Version JDK 1.1 wurde eine zusätzliche Grafikbibliothek Swing als Add-On zur Verfügung gestellt • Ab Version JDK 1.2 ist die Swing-Bibliothek fester Bestand des JDK • Swing basiert auf dem AWT, ist aber Leistungsfähiger und fortschrittlicher 02.Juni 2008 Java: "Einführung in SWING" 3 2.Warum Swing, wenn es AWT gibt? • Mit der Einführung des AWT wurde die Entwicklung von grafikorientierten Anwendungen vereinfacht • Es können sehr einfach „portable“ Programme mit grafischer Oberfläche entwickelt werden • Durch die geringe Entwicklungszeit, die den Programmierern zur Entwicklung des AWT zur Verfügung stand, konnte das AWT nicht alle programmiertechnische Bedürfnisse abdecken • Das AWT brachte nur eine Grundschnittmenge der gängigen GUIs mit sich • Java war nicht mehr betriebssystemunabhängig • Im AWT werden nur Heavyweight-Components verwendet 02.Juni 2008 Java: "Einführung in SWING" 4 2.Warum Swing, wenn es AWT gibt? Nachteile des AWT: • AWT ist sehr von den betriebsystemspezifischen Komponenten abhängig, da viel auf GUI-Ressourcen der Plattform zugegriffen wird • Sehr schwierig mit AWT ein plattformunabhängiges Look-and-Feel zu realisieren • Hoher Aufwand für die JDK-Entwicklern um Portierungsprobleme des AWT an unterschiedliche Plattformen anzugleichen • Das AWT besitzt nur eine Grundmenge von Dialogelementen, dadurch können sehr aufwendige grafische Benutzeroberflächen sehr schlecht bzw. nur mit sehr viel Aufwand realisiert werden 02.Juni 2008 Java: "Einführung in SWING" 5 3.Was ist Swing? • Swing ist die effektive Antwort auf die Kritik an das AWT • Swing ist eine Weiterentwicklung von AWT – Als Add-On ab JDK 1.1 – Ab JDK 1.2 fester Bestandteil • Swing ist ein Teil der Java-Klassenbibliothek JFC (Java Foundation Classes) • Swing greift sehr eingeschränkt auf plattformspezifische GUI-Ressourcen zu → d.h. Swing erzeugt viele GUI-Elemente selber 02.Juni 2008 Java: "Einführung in SWING" 6 4.Merkmale von Swing • Zu jeder AWT-Komponente gibt es entsprechende Swing-Komponenten, diese beginnen mit „J“ z.B. JButton , JLabel, JFrame… • Zusätzlich gibt es neues Set an vielen neuen Komponenten • Swing-Komponenten sind alle Subklassen der Klasse JComponent, ausser die Hauptfenster • Alle Elemente von Swing sind Bestandteil des Paketes javax.swing • Swing besitzt sowohl Heavyweight-Components als auch LightweightComponents 02.Juni 2008 Java: "Einführung in SWING" 7 5.Vorteile von Swing (1) Vorteile: • Plattformunabhängig („pure Java“) • Pluggable Look-And-Feel – Ermöglicht das Aussehen und die Bedienung der Komponenten zur Laufzeit ändern, ohne das Programm neu zu starten • Bessere Kompatibilität auf verschiedenen Plattformen, durch LightweightComponents • Swing hat eine umfangreichere Menge an Dialogelementen als das AWT ⇒ komfortableres Programmieren von GUI-Anwendungen 02.Juni 2008 Java: "Einführung in SWING" 8 5.Nachteile von Swing (2) Nachteile: • Swing-Anwendungen sind ressourcenhungrig, da jede Komponente von Swing erzeugt werden muss: • Viel CPU-Leistung erforderlich • Jede Menge Hauptspeicher erforderlich • Viele kleinere und größere Probleme in der Swing-Bibliothek enthalten • z.B. belegte Ressourcen werden nicht wieder komplett freigegeben (Fensterelemente, behoben seit JDK 1.3) • Fehlende Swing-Unterstützung bei Browsern für Applet-Anwendungen (Java-Plugin erforderlich) Die meisten nachteiligen Merkmale wurden ab der JDK 1.3 behoben 02.Juni 2008 Java: "Einführung in SWING" 9 6.Errungenschaften des Swing (1) Heavyweight-Components: Fenster 2 Fenster 1+2 Entwicklungsseite Fenster 1 Frame Button ButtonPeer „Peer-Objekte“ (Vermittler) Betriebssystemseite FramePeer Betriebssystem 1 02.Juni 2008 Java: "Einführung in SWING" 10 6.Errungenschaften des Swing (1) Lightweight-Components: Fenster 2 Fenster 1+2 Entwicklungsseite Fenster 1 JAVA Frame Button Look&Feel Betriebssystem Grundgerüst für Frame 02.Juni 2008 Java: "Einführung in SWING" 11 6.Errungenschaften des Swing (2) Look-And-Feel: http://www.javootoo.com/index.html • Pluggable Look-And-Feel erlaubt dem Anwender die Umschaltung von „Aussehen & Bedienung“ einer Anwendung zur Laufzeit • Keine Festlegung auf ein bestimmtes Look-And-Feel zum Design- oder Entwicklungszeitpunkt • Das Umschalten zwischen zwei Look-And-Feels erledigt der UI-Manager (User-Interface Manager) metal 02.Juni 2008 motif Java: "Einführung in SWING" windows 12 6.Errungenschaften des Swing (3) Model-View-Controller-Prinzip: Model - Liefert die Daten - Informiert die VIEW über Änderungen Holt Daten Ändert die Selektion Informiert über Änderungen View Controller - Zeigt die Daten in grafischer Form an - Sendet Benutzereingaben an den CONTROLLER Informiert über Benutzereingaben - Definiert das Verhalten der Applikation - Setzt Benutzereingaben in Modeländerungen um UI-Delegate 02.Juni 2008 Java: "Einführung in SWING" 13 6.Beispielprogramm Beispiele folgt später! 02.Juni 2008 Java: "Einführung in SWING" 14 7.JFrame JFrame contentPane JPanel JButton 02.Juni 2008 Java: "Einführung in SWING" JLabel 15 8.JWindow 02.Juni 2008 Java: "Einführung in SWING" 16 9.JDialog 02.Juni 2008 Java: "Einführung in SWING" 17 10.JOptionPane 02.Juni 2008 Java: "Einführung in SWING" 18 11.JApplet 02.Juni 2008 Java: "Einführung in SWING" 19 Vielen Dank für Ihre Aufmerksamkeit! 02.Juni 2008 Java: "Einführung in SWING" 20