Bessere Java-GUIs durch Hinweise in der Statuszeile

Leider bietet Swing keine integrierte Unterstützung für Hinweise in der Statuszeile an, doch ist es nicht schwierig, diese selbst zu implementieren. Im Grunde muss man nur einen MouseListener für jede Komponente, die einen Hinweis anzeigen soll, registrieren und dann die Methoden mouseEntered und mouseExited der MouseListener-Schnittstelle implementieren.

Die Methode mouseEntered zeigt den Hinweis für die jeweilige Komponente an, während die Methode mouseExited diesen wieder entfernt. Die Ereignisquelle kann dazu verwendet werden, die Komponente zu identifizieren und den anzuzeigenden Hinweis auszuwählen, wodurch es nicht erforderlich ist, für jede einzelne Komponente einen anderen MouseListener zu registrieren.

MouseOverHintManager (Listing A) ist eine wieder verwertbare Klasse, die Hinweise in der Statuszeile implementiert. Ihr Einsatz ist unkompliziert und erfordert lediglich Konstruktion einer MouseOverHintManager-Instanz durch Übergabe einer JLabel-Instanz, die zur Anzeige des Hinweises verwendet wird, Aufruf der Methode addHintFor für jede Komponente, der ein Hinweis zugewiesen werden soll, Aufruf der Methode enableHints für den obersten Container der Benutzeroberfläche (Fenster, Frame, Dialogbox etc.).

Die MouseOverHintManager-Implementierung lehnt sich stark an die zuvor angeführten Schritte an. Die Methode addHintFor erhält als Parameter einen Verweis auf die Komponente und dessen entsprechenden Hinweis und speichert diese in einer Map für den späteren Abruf. Zu beachten ist, dass Hinweise in einer Instanz von WeakHashMap gespeichert werden und so der Speicher bei Bedarf automatisch bereinigt wird, wenn keine weiteren Verweise auf die jeweilige Komponente bestehen. Aus diesem Grund erübrigt sich eine Methode zur Entfernung von Hinweisen.

Die Methode enableHints fügt allen Komponenten, Subkomponenten, Menüelementen etc. des als Parameter übergebenen obersten Containers den MouseOverHintManager als MouseListener hinzu.

Die Methode mouseEntered verwendet die Ereignisquelle, also die Komponente, die der Mauszeiger betreten hat, als Schlüssel zum Abruf des Hinweises aus der Map und zeigt diesen am JLabel an, der vom Konstruktor gespeichert ist. Die Methode mouseExited löscht den Hinweis einfach, indem sie den JLabel auf leer setzt.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

2 Tagen ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

5 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

5 Tagen ago

Digitalisierung! Aber wie?

Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…

5 Tagen ago

Meta meldet Gewinnsprung im ersten Quartal

Der Nettoprofi wächst um 117 Prozent. Auch beim Umsatz erzielt die Facebook-Mutter ein deutliches Plus.…

6 Tagen ago

Maximieren Sie Kundenzufriedenheit mit strategischem, kundenorientiertem Marketing

Vom Standpunkt eines Verbrauchers aus betrachtet, stellt sich die Frage: Wie relevant und persönlich sind…

6 Tagen ago