Zum Inhalt springen

Swing (Java)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 4. November 2005 um 11:46 Uhr durch Arittner (Diskussion | Beiträge) (Merkmale: kleinere Erweiterungen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Bei Swing handelt es sich um eine API zum Programmieren von grafischen Benutzeroberflächen. Swing wurde von Sun Microsystems für die Programmiersprache Java entwickelt. Seit Java-Version 1.2 (1998) ist es Bestandteil der Java-Runtime. Swing gehört zu den Java Foundation Classes (JFC), die eine Sammlung von Bibliotheken zur Programmierung von grafischen Benutzerschnittstellen bereitstellen. Zu diesen Bibliotheken gehören Java2D, die Accessibility-API, die Drag & Drop-API und das Abstract Window Toolkit (AWT). Swing baut auf dem älteren AWT auf und ist mit den anderen APIs verwoben.

Merkmale

"Pluggable Look-and-Feels"
Das Erscheinungsbild (Look, siehe Skin) und das Verhalten (Feel) von Swing-Komponenten kann mittels sogenannter Look-and-Feels angepasst werden. Auf allen Plattformen stehen sowohl das Motif Look and Feel als auch das Metal Look and Feel zur Verfügung, auf Mac und Windows zusätzlich ein dem systemüblichen angepasstes eigenes Look and Feel. Es existieren eine Reihe unabhängig entwickelter Erscheinungsbilder, wovon die meisten auf Metal basieren. Seit Java 1.5 ist das Skin-Look and Feel hinzugekommen, das die Benutzeroberfläche aus Bildern zusammenbaut und in einer XML-Datei beschrieben wird, ohne dass Java-Code geschrieben werden müsste.
Leichtgewichtige Komponenten
Swing-Komponenten werden direkt von Java gerendert und sind nicht von nativen Betriebssystemkomponenten abhängig. Dadurch funktionieren alle Swing-Komponenten auf allen Plattformen gleich, unabhängig davon, ob die entsprechende Plattform eine Komponente zur Verfügung stellt oder nicht. Der Nachteil ist, dass eine Swing-Anwendung nicht wie eine für das Betriebssystem entwickelte Anwendung aussieht. Das kann aber durch eine Auswahl an entsprechen Pluggable Look-and-Feels kompensiert werden.
Unterschiede
Im Vergleich zu AWT hat man mit Swing folgende zusätzliche Komponenten, die zur Oberflächenerzeugung genutzt werden können:
  • Keyboard Accelerators
  • Drag and Drop
  • Setzen des Look-And-Feel
  • Tooltips
  • Automatisches Double Buffering
  • Neue Layout-Manager / Panels
  • MDI Anwendungen
  • Java2D
  • Zusätzliche Komponeten um Tabellen und Baumstrukturen darzustellen

Swing wurde erstmals mit dem JDK 1.1.5 als externe Bibliothek ausgeliefert und ist seit JDK 1.2 („Java 2“) fester Bestandteil der Java-Laufzeitumgebung. Swing hatte sehr bald den Ruf, eine schlechte Performance aufzuweisen und für "ernsthafte" Anwendungen ungeeignet zu sein. Der Standard-Stil (Look&Feel) von Swing-Fenstern fand ebenfalls nicht besonders viele Freunde. Mittlerweile hat sich die Performance durch verbesserte Hardwareunterstützung der Beschleunigungsfunktionen von Grafikkarten verbessert. Es gibt aber weiter unterschiedliche Auffassungen darüber, ob man Anwendungen mit Swing oder SWT implementieren sollte.

Swing ist sehr „sauber“, modular und objektorientiert aufgebaut, so dass es sich gerade für die Entwicklung komplexer Anwendungen gut eignet. Durch die Plattformunabhängigkeit entfällt ebenfalls viel Entwicklungs- und Testarbeit.

Beispiele

Als Beispiel für eine Swing-Anwendung wird hier das obligatorische Hallo-Welt-Programm angegeben:

Code for HelloWorldSwing:

import javax.swing.*;        
public class HelloWorldSwing {
    /**
     * Erstellt die grafischen Komponenten und zeigt
     * sie an. 
     */
    private static void createAndShowGUI() {
        //Erstellt das Fenster
        JFrame frame = new JFrame("HalloWeltSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Fügt den "Hallo Welt"-Text hinzu
        JLabel label = new JLabel("Hallo Welt");
        frame.getContentPane().add(label);

        //Zeigt das Fenster an
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
          public void run() {
            createAndShowGUI();
          }
        };
        SwingUtilities.invokeLater(runnable);
    }
}

Um das LAF (Look-And-Feel) zu ändern, reichen die folgenden Zeilen aus:

try { // setzen des Look-And-Feel
    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    // die Oberfläche wird mit dem neuen LAF angezeigt
    SwingUtilities.updateComponentTreeUI(this); 
}
catch (Exception e){
    System.out.println("Das Metal-Look-And-Feel kann nicht geladen werden");
}


Literatur

  • Deutsche Bücher:
    • David Geary: Graphic Java 2.0 Band II . Die JFC beherrschen (Swing). 3. Auflage. Markt+Technik, 15. November 1999, ISBN 3827295904 (Übersetzung d. engl. Orginals)
    • David Geary: Graphic Java 2.0. Die JFC beherrschen (AWT). 3. Auflage. Markt+Technik, 15. Juli 1999, ISBN 3827295858 (Übersetzung d. engl. Orginals)
    • Paul Fischer: Grafik-Programmierung mit Java-Swing. Addison-Wesley, 15. September 2001, ISBN 3827319102
  • Englische Bücher:
    • Marc Loy, Robert Eckstein, Dave Wood: Java Swing. 2. Auflage. O'REILLY, November 2002, ISBN 0596004087
    • Kathy Walrath, Mary Campione, Alison Huml: The JFC Swing Tutorial. 2. Auflage. Addison-Wesley Professional, Februar 2004, ISBN 0201914670 (Sehr gute Referenz)
    • Kim Topley: Core Swing Advanced Programming. Prentice Hall, 2000, ISBN 0130832928
    • Kim Topley: Core, Java Foundation Classes. Prentice Hall, 1998, ISBN 0130803014
    • David M. Geary: Mastering the JFC - Volume II Swing. 3. Auflage. Prentice Hall PTR, 1998, ISBN 0130796670 (Sehr gute Referenz)
    • David M. Geary: Mastering the JFC - Volume I AWT. 3. Auflage. Prentice Hall PTR, 1999, ISBN 0130796662 (Sehr gute Referenz)

Siehe auch