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.
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.