Advanced
Java
Services
|
Eigene FocusTraversalPolicy |
Es ist nicht sehr schwer eine eigene FocusTraversalPolicy zu schreiben. Für die beiden folgenden
Beispiele beschreiben wir kurz die Eigenschaften der beiden awt-Policys.
DefaultFocusTraversalPolicy
Bei einem Container mit dieser Policy werden die fokusfähigen Komponenten in der Reihenfolge
durchschritten, in der sie in den Container ge-add-et worden sind. Der Container selbst erhält
keinen Fokus.
ContainerOrderFocusTraversalPolicy
Bei einem Container mit dieser Policy werden die fokusfähigen Komponenten ebenfalls in der Reihenfolge
durchschritten, in der sie in den Container ge-add-et worden sind. Diesmal erhält beim Traversieren
jedoch auch der Container am Ende der Komponententraversierung den Fokus. Danach geht der Fokus wieder
auf die erste Komponente.
FocusTraversalPolicy und BorderLayout
Die oben angesprochene Regel gilt auch für BorderLayout. Es gibt also keine spezielle Policy für
das BorderLlayout, etwa im Uhrzeigersinn und dann ins Zentrum oder ähnliches. Auch hier ist die
Reihenfolge des Addens entscheidend.
SkipContainerFocusTraversalPolicy
Interessanterweise funktioniert die DefaultFocusTraversalPolicy nicht mit ScrollBars, die
ContainerOrderFocusTraversalPolicy jedoch schon. Die folgende FocusTraversalPolicy ist eine
Ableitung von ContainerOrderFocusTraversalPolicy, die das Verhalten von DefaultFocusTraversalPolicy
hat und auch für ScrollBars funktioniert:
Für ein Panel etwa setzt man die Policy wie folgt ein:
ReverseOrderDefaultFocusTraversalPolicy
Hier noch ein Beispiel einer Policy das die Richtung des Durchschreitens der Komponenten
umdreht.
Hier kann man natürlich genauso gut von ContainerOrderFocusTraversalPolicy ableiten oder auch von SkipContainerFocusTraversalPolicy.