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

Swing verpackt View und Controller jeder Komponente in ein Objekt namens UI-Delegate. Aus diesem Grund wird die Swing zugrunde liegende Architektur als Model-Delegate statt als Model-View-Controller bezeichnet. Idealerweise erfolgt jegliche Kommunikation zwischen dem Modell und dem UI-Delegate auf indirekte Weise, so dass mehr als ein Modell mit einem UI-Delegate verknüpft werden kann und umgekehrt.

UI-Delegates

Jedes UI-Delegate ist von einer abstrakten Klasse namens ComponentUI abgeleitet. ComponentUI-Methoden beschreiben die grundlegende Art und Weise, wie ein UI-Delegate und eine Komponente, die dieses benutzt, miteinander kommunizieren. Man beachte, dass jede Methode eine JComponent als Parameter erwartet. Die wichtigsten ComponentUI-Methoden sind hier aufgelistet:

  • static ComponentUI createUI(JComponent c): Diese Methode wird normalerweise so implementiert, dass sie eine gemeinsame Instanz des UI-Delegate zurückgibt, das von der definierenden Unterklasse ComponentUI selber definiert wird. Diese Instanz wird für den Austausch unter Komponenten desselben Typs verwendet. Ein Beispiel: Alle JButtons, die das Metal-Look-and-Feel verwenden, teilen dieselbe statische UI-Delegate-Instanz, die standardmäßig in javax.swing.plaf.metal.MetalButtonUI definiert ist.
  • installUI(JComponent c): Diese Methode installiert die ComponentUI auf der angegebenen Komponente. Dadurch werden der Komponente und/oder ihrem Modell normalerweise Listener hinzugefügt, die das UI-Delegate benachrichtigen, wenn sich Statusänderungen ergeben, die eine Aktualisierung der Ansicht (View) erforderlich machen.
  • update(Graphics g, JComponent c): Falls die Komponente undurchsichtig ist, zeichnet diese Methode den Hintergrund und ruft dann paint(Graphics g, JComponent c) auf.
  • paint(Graphics g, JComponent c): Diese Methode erhält alle benötigten Informationen von der Komponente und eventuellen Modellen, um sie korrekt darzustellen.

Um die Verwendung eines bestimmten UI-Delegate zu erzwingen, kann man die Methode setUI() einer Komponente wie folgt aufrufen:

Die Klasse JComponent definiert Methoden zum Zuordnen von UI-Delegates, weil die erforderlichen Methodendeklarationen keinen komponentenspezifischen Code enthalten. Allerdings ist dies bei Datenmodellen nicht möglich. Hier gibt es nämlich kein grundlegendes Interface, das für alle Modelle gilt. Das heißt, es gibt keine Basisklasse wie ComponentUI für Swing-Modelle. Aus diesem Grund werden die Methoden zum Zuordnen von Modellen bei Bedarf in Unterklassen von JComponent definiert.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Google kündigt neue Sicherheitsfunktionen für Chrome an

Der Sicherheitscheck entzieht unsicheren Websites automatisch alle Berechtigungen. Zudem können Nutzer in Chrome künftig Websites…

8 Stunden ago

Cyberkriminelle nehmen Fertigungsbetriebe ins Visier

Ontinue registriert einen Anstieg beim Anteil am Gesamtangriffsvolumen um 105 Prozent. Das Angriffsvolumen auf den…

8 Stunden ago

o1: OpenAI stellt neues KI-Modell für komplexe Abfragen vor

Das o1 genannte Modell liegt als Preview vor. Bei einer Mathematikprüfung beantwortet es 83 Prozent…

3 Tagen ago

Zoom erhält IT-Sicherheits- kennzeichen des BSI

Das Kennzeichen erhalten Zoom Workplace Pro und Zoom Workplace Basic. Es bescheinigt unter anderem aktuelle…

4 Tagen ago

Google verbessert Tab-Verwaltung in Chrome

iOS und iPadOS erhalten Tab-Gruppen. Zudem unterstützt Chrome nun die Synchronisierung von Tab-Gruppen.

4 Tagen ago

Identitätsdiebstahl: 58 Prozent der Deutschen sorgen sich um digitales Erbe

Sie befürchten einen Missbrauch der Identitäten von Verstorbenen. 60 Prozent befürworten deswegen eine Klärung des…

4 Tagen ago