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

Gaming-bezogene Phishing-Attacken um 30 Prozent gestiegen

Über drei Millionen Angriffsversuche unter Deckmantel von Minecraft / YouTube-Star Mr. Beast als prominenter Köder

2 Tagen ago

KI erleichtert Truckern die Parkplatzsuche

Die Prognose für die Anfahrt bezieht das Verkehrsaufkommen, die Stellplatzverfügbarkeit sowie die Lenk- und Ruhezeiten…

2 Tagen ago

EU AI-Act Risk Assessment Feature

Unternehmen können mit Casebase Portfolio an Daten- und KI-Anwendungsfällen organisieren.

2 Tagen ago

Smarthome-Geräte sind Einfallstor für Hacker

Smart-TV oder Saugroboter: Nutzer schützen ihre smarten Heimgeräte zu wenig, zeigt eine repräsentative BSI-Umfrage.

2 Tagen ago

Core Ultra 200V: Intel stellt neue Notebook-Prozessoren vor

Im Benchmark erreicht der neue Core Ultra 200V eine Laufzeit von 14 Stunden. Intel tritt…

2 Tagen ago

Irrglaube Inkognito-Modus

Jeder dritte hält sich damit für unsichtbar. Wie widersprüchlich unser Datenschutzverhalten oft ist, zeigt eine…

3 Tagen ago