Bessere Java-GUIs durch Hinweise in der Statuszeile

Zu erwähnen sind paar kleine Tricks, die dafür sorgen, dass Hinweise auch wie erwartet angezeigt werden. Erstens ist zu beachten, dass die Methode mouseEntered den Hinweis für die Komponente holt, die das Ereignis ausgelöst hat. Wenn für diese Komponente kein Hinweis besteht, überprüft mouseEntered, ob für dessen übergeordnete Komponente ein Hinweis besteht.

Dieser Vorgang wiederholt sich, bis die höchste Komponente erreicht oder ein Hinweis gefunden wird, der dem Anwender dann angezeigt wird. Diese Logik ermöglicht es, einen Hinweis für einen Container zu setzen – wie ein Panel – und denselben Hinweis bei allen untergeordneten Elementen anzeigen zu lassen. Auch kann man einen Hinweis für das übergeordnete Element und einen anderen für das untergeordnete Element setzen.

Ein weiterer Kniff ist die Methode getHintFor, die mit mouseEntered aufgerufen wird und einen Hinweis für eine Komponente holt. Wenn die als Parameter erhaltene Komponente keinen Hinweis enthält, erfolgt eine Prüfung auf besondere Fälle. Handelt es sich um eine JLabel– oder eine JTableHeader-Komponente, gibt die Methode den Hinweis der Komponente zurück, mit der JLabel beziehungsweise JTable verbunden ist. So muss ein Hinweis nicht zweimal für eine Komponente und dann wiederum für deren Label gesetzt werden, obwohl sie als getrennte Komponenten angezeigt werden.

Hinweise in der Praxis

MouseOverHintDemo (Listing B) ist ein einfaches Beispiel, das die Verwendung der Klasse MouseOverHintManager veranschaulicht. Hier wird einfach ein JFrame mit einer Statuszeile zur Anzeige der Hinweise und mancher der am häufigsten verwendeten Swing-Komponenten erstellt.

Das Beispiel ist unkompliziert: Es erstellt lediglich alle Komponenten der Benutzeroberfläche, weist diesen Hinweise zu, generiert das Hauptfenster der Applikation und ruft MouseOverHintManager.enableHints auf. Wichtig ist zu beachten, dass enableHints zuletzt, nach der Generierung der Benutzeroberfläche aufgerufen wird, so dass enableHints MouseListener für alle Komponenten registrieren kann. Dies ist erforderlich, damit MouseOverHintManager Mausereignisse von allen Komponenten erhalten und den jeweils angebrachten Hinweis auswählen kann.

Die Ausführung des Beispiels erzeugt ein einfaches Fenster mit mehreren Elementen. Wird die Maus über die Komponenten und Menüelemente bewegt, wird jeweils ein Hinweis in der Statuszeile der Applikation angezeigt. Beide Optionsfelder zeigen, wie man sieht, denselben Hinweis an. Dieser wurde übrigens auf dem ihnen übergeordneten Panel gesetzt.

Hinweise sind eine wichtige Methode um Applikationen benutzerfreundlicher zu gestalten. Statuszeilenhinweise stellen eine Alternative zu Swing-Tooltips dar und lassen sich problemlos implementieren.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Bayerische KI-Agentur bietet KI-KOMPASS

Das KI-Werkzeug "BAIOSPHERE KI-KOMPASS" soll Unternehmen den Einstieg in KI erleichtern.

1 Woche ago

Cloudflare: Weltweiter Internettraffic wächst 2024 um 17,2 Prozent

Das Wachstum konzentriert sich wie im Vorjahr auf das zweite Halbjahr. Google dominiert bei den…

1 Woche ago

Adobe stopft kritische Löcher in Reader und Acrobat

Sie ermöglichen eine Remotecodeausführung. Angreifbar sind Acrobat DC, 2024 und 2020 sowie Reader DC und…

1 Woche ago

Dezember-Patchday: Microsoft schließt Zero-Day-Lücke

Die öffentlich bekannte und bereits ausgenutzte Schwachstelle erlaubt eine Rechteausweitung. Betroffen sind alle unterstützten Versionen…

1 Woche ago

Quantencomputer: Google meldet Durchbruch bei Fehlerkorrektur

Der neue Quantenchip Willow löst eine Herausforderung, an der seit 30 Jahren gearbeitet wird. Google…

1 Woche ago

OpenAI veröffentlicht KI-Video-Tool Sora

Es erstellt kurze Videoclips aus Textaufforderungen. Sora steht ab sofort Abonnenten von ChatGPT Plus und…

1 Woche ago