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.
Neueste Kommentare
Noch keine Kommentare zu Bessere Java-GUIs durch Hinweise in der Statuszeile
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.