GUI-Design mit der Java-Swing-API: So verwendet man PLAF

Swing enthält mehrere Sets von UI-Delegates. Jedes Set enthält ComponentUI-Implementierungen für die meisten Swing-Komponenten und wird PLAF-Implementierung genannt.

Das Paket javax.swing.plaf besteht aus abstrakten Klassen, die von ComponentUI abgeleitet sind. Die Klassen im Paket javax.swing.plaf.basic erweitern diese abstrakten Klassen, um das Basic-Look-and-Feel zu implementieren. Das ist das Set von UI-Delegates, das alle anderen Look-and-Feel-Klassen als Ausgangspunkt verwenden sollen. Das Basic-Look-and-Feel kann nicht selbständig verwendet werden, da BasicLookAndFeel eine abstrakte Klasse ist. Es gibt drei einsatzfertige Look-and-Feel-Implementierungen, die vom Basic-Look-and-Feel abgeleitet sind:

  • Windows: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
  • CDEMotif: com.sun.java.swing.plaf.motif.MotifLookAndFeel
  • Metal (standardmäßig): javax.swing.plaf.metal.MetalLookAndFeel

Es gibt auch ein MacLookAndFeel zur Simulation einer Macintosh-Benutzeroberfläche. Doch es wird nicht zusammen mit Java 2 geliefert, sondern muss separat heruntergeladen werden. Das Multiplexing-Look-and-Feel (javax.swing.plaf.multi.MultiLookAndFeel) erweitert alle abstrakten Klassen in javax.swing.plaf. Es ist dafür gedacht, Kombinationen von Look-and-Feels simultan zu verwenden, vor allem, aber nicht nur für den Einsatz mit Accessibility-Look-and-Feels. Aufgabe jedes Multiplexing-UI-Delegate ist die Verwaltung all seiner untergeordneten UI-Delegates.

Jedes Look-and-Feel-Paket enthält eine Klasse, die von der abstrakten Klasse javax.swing.LookAndFeel: BasicLookAndFeel, MetalLookAndFeel, WindowsLookAndFeel, und so weiter abgeleitet ist. Das sind die zentralen Punkte für den Zugriff auf jedes Look-and-Feel-Paket. Man verwendet sie, wenn das aktuelle Look-and-Feel geändert werden soll. Die Klasse UI-Manager, die zur Verwaltung installierter Look-and-Feels verwendet wird, benutzt sie zum Zugriff auf die UI-Defaults-Tabelle des aktuellen Look-and-Feel. Diese enthält unter anderem UI-Delegate-Klassennamen für das entsprechende Look-and-Feel jeder Swing-Komponente.

Um das aktuelle Look-and-Feel einer Anwendung zu ändern, kann einfach die Methode setLookAndFeel() des UI-Manager augefrufen werden, um ihr den vollständig qualifizierten Namen des zu verwendenden LookAndFeel zu übergeben. Zur Laufzeit wird dies mit dem Code aus Listing A erreicht.

Listing A


SwingUtilities.updateComponentTreeUI() informiert alle abhängigen Elemente der angegebenen Komponente, dass sich das Look-and-Feel geändert hat und dass sie ihren UI-Delegate gegen einen anderen des angegebenen Typs austauschen müssen.

Ein PLAF erstellen

Wer selber ein PLAF erstellt, muss sich entscheiden, welche von zwei Designmethoden für das Erstellen eines Look-and-Feel in Java verwendet werden sollen. Eine Methode besteht darin, das Paket javax.swing.plaf zu erweitern. Bei der anderen Methode erweitert man ein vorhandenes Look-and-Feel-Paket, normalerweise javax.swing.plaf.basic.

Es empfiehlt sich nicht, ein Look-and-Feel aus dem Paket javax.swing.plaf zu erweitern, wenn das Look-and-Feel für einen PC gedacht ist. Denn das Paket javax.swing.plaf.basic erweitert bereits fast alle Komponenten des javax.swing.plaf-Pakets, so dass diese unmittelbar einzusetzen sind. Damit braucht der Programmierer nur zu entscheiden, welche Aspekte am Look-and-Feel geändert werden sollen, und die entsprechende Komponente auswählen. Auf diese Weise muss man nicht alles selber erweitern und implementieren.

Bei der Implementierung des Pakets javax.swing.plaf kommt ein grundlegendes Prinzip zum Tragen, das die einfache Anpassung eines Look-and-Feel ermöglicht. Dieses Prinzip ist die zentrale Zusammenfassung von Komponenten, Farbe und UI-Klassen in der Klasse LookAndFeel.

Das Paket javax.swing.plaf.basic zeichnet die leichtgewichtigen Swing-Komponenten wie erwartet. Die Empfehlung ändert sich allerdings, wenn man ein Look-and-Feel für ein anderes Gerät als einen PC erstellt. Dann ist die bevorzugte Methode eine umfassende Erweiterung des javax.swing.plaf-Pakets.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu GUI-Design mit der Java-Swing-API: So verwendet man PLAF

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *