java.awt
public abstract class KeyboardFocusManager extends Object implements KeyEventDispatcher, KeyEventPostProcessor
KeyboardFocusManager
handles the focusing of
windows for receiving keyboard events. The manager handles
the dispatch of all FocusEvent
s and
KeyEvent
s, along with WindowEvent
s
relating to the focused window. Users can use the manager
to ascertain the current focus owner and fire events.
Component
that receives
key events. The focus owner is either the currently focused
window or a component within this window.
Frame
or Dialog
, and is either the currently focused
window or its owner.
KeyboardFocusManager
, as opposed to the global
manager maintained by applets which share the same context.
Each context is insulated from the others, and they don't interact.
The resulting behaviour, as with context division, depends on the browser
supporting the applets. Regardless, there can only ever be
one focused window, one active window and one focus owner
per ClassLoader
.
ThreadGroup
to which it pertains. With respect to
applets, each code base has its own ThreadGroup
, so the
isolation of each context is enforced within the manager.
KEY_PRESSED
event.
However, all other key events related to the use of the
defined focus traversal key sequence are consumed and not
dispatched.
Since: 1.4
Field Summary | |
---|---|
static int | BACKWARD_TRAVERSAL_KEYS Identifies {@link AWTKeyStroke}s that move the focus backward in
the focus cycle. |
static int | DOWN_CYCLE_TRAVERSAL_KEYS Identifies {@link AWTKeyStroke}s that move the focus down to the
child focus cycle root. |
static int | FORWARD_TRAVERSAL_KEYS Identifies {@link AWTKeyStroke}s that move the focus forward in
the focus cycle. |
static int | UP_CYCLE_TRAVERSAL_KEYS Identifies {@link AWTKeyStroke}s that move the focus up to the
parent focus cycle root. |
Constructor Summary | |
---|---|
KeyboardFocusManager()
Construct a KeyboardFocusManager. |
Method Summary | |
---|---|
void | addKeyEventDispatcher(KeyEventDispatcher dispatcher)
Adds a key event dispatcher to the list of registered dispatchers.
|
void | addKeyEventPostProcessor(KeyEventPostProcessor postProcessor)
Adds a key event post processor to the list of registered post processors.
|
void | addPropertyChangeListener(PropertyChangeListener l)
Registers the supplied property change listener for receiving
events caused by the following property changes:
|
void | addPropertyChangeListener(String name, PropertyChangeListener l)
Registers a property change listener for receiving events relating
to a change to a specified property. |
void | addVetoableChangeListener(VetoableChangeListener l)
Registers a vetoable property change listener for receiving events
relating to the following properties:
|
void | addVetoableChangeListener(String name, VetoableChangeListener l)
Registers a vetoable property change listener for receiving events relating
to a vetoable change to a specified property. |
void | clearGlobalFocusOwner()
Clear the global focus owner and deliver a FOCUS_LOST event to
the previously-focused {@link Component}. |
protected abstract void | dequeueKeyEvents(long after, Component untilFocused)
Removes the key event block specified by the supplied timestamp and component.
|
protected abstract void | discardKeyEvents(Component comp)
Discards all key event blocks relating to focus requirements for
the supplied component, regardless of timestamp.
|
abstract boolean | dispatchEvent(AWTEvent e)
The AWT event dispatcher uses this method to request that the manager
handle a particular event. |
abstract boolean | dispatchKeyEvent(KeyEvent e)
Attempts to dispatch key events for which no key event dispatcher
has so far succeeded. |
abstract void | downFocusCycle(Container cont)
Moves the current focus downwards by one focus cycle.
|
void | downFocusCycle()
Moves the current focus downwards by one focus cycle,
iff the current focus cycle root is a Container .
|
protected abstract void | enqueueKeyEvents(long after, Component untilFocused)
Delays all key events following the specified timestamp until the
supplied component has focus. |
protected void | firePropertyChange(String name, Object o, Object n)
Fires a property change event as a response to a change to
to the specified property. |
protected void | fireVetoableChange(String name, Object o, Object n)
Fires a property change event as a response to a vetoable change to
to the specified property. |
abstract void | focusNextComponent(Component comp)
Moves the current focus to the next component following
comp, based on the current focus traversal policy. |
void | focusNextComponent()
Moves the current focus to the next component, based on the
current focus traversal policy. |
abstract void | focusPreviousComponent(Component comp)
Moves the current focus to the previous component, prior to
comp, based on the current focus traversal policy. |
void | focusPreviousComponent()
Moves the current focus to the previous component, based on the
current focus traversal policy. |
Window | getActiveWindow()
Retrieve the active {@link Window}, or null if the active window
was not set by a thread in the current {@link
java.lang.ThreadGroup}.
|
Container | getCurrentFocusCycleRoot()
Retrieve the current focus cycle root, or null if the focus owner
was not set by a thread in the current {@link
java.lang.ThreadGroup}.
|
static KeyboardFocusManager | getCurrentKeyboardFocusManager()
Retrieve the keyboard focus manager associated with the {@link
java.lang.ThreadGroup} to which the calling thread belongs.
|
Set<AWTKeyStroke> | getDefaultFocusTraversalKeys(int id)
Retrieve the default {@link java.util.Set} of focus traversal
keys for one of the focus traversal directions.
|
FocusTraversalPolicy | getDefaultFocusTraversalPolicy()
Retrieve the default {@link FocusTraversalPolicy}.
|
Window | getFocusedWindow()
Retrieve the {@link Window} that is or contains the keyboard
focus owner, or null if the focused window was not set by a
thread in the current {@link java.lang.ThreadGroup}.
|
Component | getFocusOwner()
Retrieve the {@link Component} that has the keyboard focus, or
null if the focus owner was not set by a thread in the current
{@link java.lang.ThreadGroup}.
|
protected Window | getGlobalActiveWindow()
Retrieve the active {@link Window}, regardless of whether or not
the {@link Window} was made active by a thread in the current
{@link java.lang.ThreadGroup}.
|
protected Container | getGlobalCurrentFocusCycleRoot()
Retrieve the current focus cycle root, regardless of whether or
not it was made set by a thread in the current {@link
java.lang.ThreadGroup}.
|
protected Window | getGlobalFocusedWindow()
Retrieve the {@link Window} that is or contains the focus owner,
regardless of whether or not the {@link Window} was set focused
by a thread in the current {@link java.lang.ThreadGroup}.
|
protected Component | getGlobalFocusOwner()
Retrieve the {@link Component} that has the keyboard focus,
regardless of whether or not it was set by a thread in the
current {@link java.lang.ThreadGroup}. |
protected Component | getGlobalPermanentFocusOwner()
Retrieve the {@link Component} that has the permanent keyboard
focus, regardless of whether or not it was set by a thread in the
current {@link java.lang.ThreadGroup}.
|
protected List<KeyEventDispatcher> | getKeyEventDispatchers()
Returns the currently registered key event dispatchers in List
form. |
protected List<KeyEventPostProcessor> | getKeyEventPostProcessors()
Returns the currently registered key event post processors in List
form. |
Component | getPermanentFocusOwner()
Retrieve the {@link Component} that has the permanent keyboard
focus, or null if the focus owner was not set by a thread in the
current {@link java.lang.ThreadGroup}.
|
PropertyChangeListener[] | getPropertyChangeListeners()
Returns the currently registered property change listeners
in array form. |
PropertyChangeListener[] | getPropertyChangeListeners(String name)
Returns the currently registered property change listeners
in array form, which listen for changes to the supplied property.
|
VetoableChangeListener[] | getVetoableChangeListeners()
Returns the currently registered vetoable property change listeners
in array form. |
VetoableChangeListener[] | getVetoableChangeListeners(String name)
Returns the currently registered vetoable property change listeners
in array form, which listen for changes to the supplied property.
|
abstract boolean | postProcessKeyEvent(KeyEvent e)
Handles the post processing of key events. |
abstract void | processKeyEvent(Component focused, KeyEvent e)
Handles focus traversal operations for key events which
represent focus traversal keys in relation to the supplied
component. |
void | redispatchEvent(Component target, AWTEvent e)
Handles redispatching of an event so that recursion of
dispatch requests does not occur. |
void | removeKeyEventDispatcher(KeyEventDispatcher dispatcher)
Removes the specified key event dispatcher from the list of
registered dispatchers. |
void | removeKeyEventPostProcessor(KeyEventPostProcessor postProcessor)
Removes the specified key event post processor from the list of
registered post processors. |
void | removePropertyChangeListener(PropertyChangeListener l)
Removes the supplied property change listener from the list
of registered listeners. |
void | removePropertyChangeListener(String name, PropertyChangeListener l)
Removes the supplied property change listener registered for the
specified property from the list of registered listeners. |
void | removeVetoableChangeListener(VetoableChangeListener l)
Removes the supplied vetoable property change listener from
the list of registered listeners. |
void | removeVetoableChangeListener(String name, VetoableChangeListener l)
Removes the supplied vetoable property change listener registered
for the specified property from the list of registered listeners.
|
static void | setCurrentKeyboardFocusManager(KeyboardFocusManager m)
Set the keyboard focus manager associated with the {@link
java.lang.ThreadGroup} to which the calling thread belongs.
|
void | setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
Set the default {@link java.util.Set} of focus traversal keys for
one of the focus traversal directions.
|
void | setDefaultFocusTraversalPolicy(FocusTraversalPolicy policy)
Set the {@link FocusTraversalPolicy} returned by {@link
#getDefaultFocusTraversalPolicy}. |
protected void | setGlobalActiveWindow(Window window)
Set the {@link Window} that will be returned by {@link
#getActiveWindow} (when it is called from the current {@link
java.lang.ThreadGroup}) and {@link #getGlobalActiveWindow}. |
void | setGlobalCurrentFocusCycleRoot(Container cycleRoot)
Set the {@link Container} that will be returned by {@link
#getCurrentFocusCycleRoot} (when it is called from the current
{@link java.lang.ThreadGroup}) and {@link
#getGlobalCurrentFocusCycleRoot}. |
protected void | setGlobalFocusedWindow(Window window)
Set the {@link Window} that will be returned by {@link
#getFocusedWindow} (when it is called from the current {@link
java.lang.ThreadGroup}) and {@link #getGlobalFocusedWindow}.
|
protected void | setGlobalFocusOwner(Component owner)
Set the {@link Component} that will be returned by {@link
#getFocusOwner} (when it is called from the current {@link
java.lang.ThreadGroup}) and {@link #getGlobalFocusOwner}. |
protected void | setGlobalPermanentFocusOwner(Component focusOwner)
Set the {@link Component} that will be returned by {@link
#getPermanentFocusOwner} (when it is called from the current
{@link java.lang.ThreadGroup}) and {@link
#getGlobalPermanentFocusOwner}. |
abstract void | upFocusCycle(Component comp)
Moves the current focus upwards by one focus cycle.
|
void | upFocusCycle()
Moves the current focus upwards by one focus cycle,
so that the new focus owner is the focus cycle root
of the current owner. |
dispatchKeyEvent
method is called in the order that they were added, prior to the manager
dispatching the event itself. Notifications halt when one of the
dispatchers returns true.
Parameters: dispatcher The dispatcher to register.
postProcessKeyEvent
method is called to see if any post processing needs to be performed. THe
processors are called in the order in which they were added to the list,
and notifications continue until one returns true. As with key event
dispatchers, the manager is implicitly called following this process,
regardless of whether or not it is present within the list.
Parameters: postProcessor the post processor to register.
See Also: addKeyEventDispatcher
Parameters: l the new listener to register.
See Also: KeyboardFocusManager
Parameters: name the name of the property to handle change events for. l the listener to register for changes to the specified property.
See Also: addPropertyChangeListener
Parameters: l the listener to register.
See Also: KeyboardFocusManager
Parameters: name the name of the property to handle change events for. l the listener to register for changes to the specified property.
See Also: addVetoableChangeListener
Parameters: after the timestamp of the key event block to be removed, or a value smaller than 0 if the oldest is to be removed. untilFocused the component of the key event block to be removed.
Parameters: comp the component of the key event block(s) to be removed.
FocusEvent
s
and KeyEvent
s, and WindowEvent
s
relating to the focus. Dispatch is done with regard to the
the focus owner and the currently focused and active windows.
In handling the event, the source of the event may be overridden.
redispatchEvent()
. This avoids the infinite recursion
of dispatch requests which may occur if this method is called on
the target component.
Parameters: e the event to dispatch.
Returns: true if the event was dispatched.
See Also: KeyboardFocusManager KeyEvent FocusEvent WindowEvent
dispatchEvent()
following the sending of the key
event to any registered key event dispatchers. If the key
event reaches this stage, none of the dispatchers returned
true. This is, of course, always the case if there are no
registered dispatchers.
dispatchEvent()
, the calling method may try
to handle the event itself or simply forward on the
false result to its caller. When the event is dispatched
by this method, a true result is propogated through the
calling methods.
Parameters: e the key event to dispatch.
Returns: true if the event was dispatched successfully.
Parameters: cont the container used as part of the focus traversal.
Container
.
Usually, the new focus owner is set to the default component
of the container and the current focus cycle root is set
to the current focus owner. Nothing occurs if the current
focus cycle root is not a container.FOCUS_GAINED
event is received
for the untilFocused component. The manager is responsible for ensuring
this takes place.
Parameters: after the timestamp beyond which all key events are delayed until the supplied component gains focus. untilFocused the component to wait on gaining focus.
Parameters: name The name of the property to which a change occurred. o The old value of the property. n The new value of the property.
PropertyVetoException
to
the proposed change.
PropertyVetoException
in response to the reversion.
Parameters: name The name of the property to which a change occurred. o The old value of the property. n The new value of the property.
Throws: PropertyVetoException if one of the listeners vetos the change by throwing this exception.
Canvas
es, Panel
s,
Label
s, ScrollPane
s, Scrollbar
s,
Window
s and lightweight components are judged
to be unacceptable by default. See the
DefaultFocusTraversalPolicy
for more details.
Parameters: comp the component prior to the one which will become the focus, following execution of this method.
See Also: DefaultFocusTraversalPolicy
Canvas
es, Panel
s,
Label
s, ScrollPane
s, Scrollbar
s,
Window
s and lightweight components are judged
to be unacceptable by default. See the
DefaultFocusTraversalPolicy
for more details.
See Also: DefaultFocusTraversalPolicy
Canvas
es, Panel
s,
Label
s, ScrollPane
s, Scrollbar
s,
Window
s and lightweight components are judged
to be unacceptable by default. See the
DefaultFocusTraversalPolicy
for more details.
Parameters: comp the component following the one which will become the focus, following execution of this method.
See Also: DefaultFocusTraversalPolicy
Canvas
es, Panel
s,
Label
s, ScrollPane
s, Scrollbar
s,
Window
s and lightweight components are judged
to be unacceptable by default. See the
DefaultFocusTraversalPolicy
for more details.
See Also: DefaultFocusTraversalPolicy
Returns: the active window or null
Returns: the current focus cycle root or null
Returns: the keyboard focus manager associated with the current thread group
Parameters: id focus traversal direction identifier
Returns: the default set of AWTKeyStrokes
See Also: FORWARD_TRAVERSAL_KEYS BACKWARD_TRAVERSAL_KEYS UP_CYCLE_TRAVERSAL_KEYS DOWN_CYCLE_TRAVERSAL_KEYS
Returns: a non-null default FocusTraversalPolicy object
Returns: the focused window or null
Returns: the keyboard focus owner or null
Returns: the active window
Throws: SecurityException if this is not the keyboard focus manager associated with the current {@link java.lang.ThreadGroup}
Returns: the current focus cycle root
Throws: SecurityException if this is not the keyboard focus manager associated with the current {@link java.lang.ThreadGroup}
Returns: the focused window
Throws: SecurityException if this is not the keyboard focus manager associated with the current {@link java.lang.ThreadGroup}
Returns: the keyboard focus owner
Throws: SecurityException if this is not the keyboard focus manager associated with the current {@link java.lang.ThreadGroup}
Returns: the keyboard focus owner
Throws: SecurityException if this is not the keyboard focus manager associated with the current {@link java.lang.ThreadGroup}
List
form. At present, this only includes dispatchers explicitly registered
via the addKeyEventDispatcher()
method, but this behaviour
is subject to change and should not be depended on. The manager itself
may be a member of the list, but only if explicitly registered. If no
dispatchers have been registered, the list will be empty.
Returns: A list of explicitly registered key event dispatchers.
See Also: addKeyEventDispatcher
List
form. At present, this only includes post processors explicitly registered
via the addKeyEventPostProcessor()
method, but this behaviour
is subject to change and should not be depended on. The manager itself
may be a member of the list, but only if explicitly registered. If no
post processors have been registered, the list will be empty.
Returns: A list of explicitly registered key event post processors.
See Also: addKeyEventPostProcessor
Returns: the keyboard focus owner or null
Returns: an array of registered property change listeners.
Parameters: name The property the returned listeners monitor for changes.
Returns: an array of registered property change listeners which listen for changes to the supplied property.
Returns: an array of registered vetoable property change listeners.
Since: 1.4
Parameters: name The property the returned listeners monitor for changes.
Returns: an array of registered property change listeners which listen for changes to the supplied property.
Since: 1.4
MenuShortcut
s. The event is consumed
in the process and the shortcut is activated. This
method is usually called by dispatchKeyEvent
.
Parameters: e the key event to post process.
Returns: true by default, as the event was handled.
Parameters: focused the component on which to perform focus traversal, on the assumption that this component has the focus. e the possible focus traversal key event.
dispatchEvent()
) and
the key event dispatchers should use this method to handle
dispatching rather than the dispatch method of the target
component.
Parameters: target the target component to which the event is dispatched. e the event to dispatch.
Parameters: dispatcher The dispatcher to remove.
Parameters: postProcessor the post processor to remove.
Parameters: l the listener to remove.
Parameters: name the name of the property the listener is monitoring changes to. l the listener to remove.
Parameters: l the listener to remove.
Parameters: name the name of the vetoable property the listener is monitoring changes to. l the listener to remove.
Parameters: m the keyboard focus manager for the current thread group
Parameters: id focus traversal direction identifier keystrokes set of AWTKeyStrokes
See Also: FORWARD_TRAVERSAL_KEYS BACKWARD_TRAVERSAL_KEYS UP_CYCLE_TRAVERSAL_KEYS DOWN_CYCLE_TRAVERSAL_KEYS
Parameters: policy the FocusTraversalPolicy that will be returned by subsequent calls to getDefaultFocusTraversalPolicy
Throws: IllegalArgumentException if policy is null
window
to be made
active.
Parameters: window the Window to return from getActiveWindow and getGlobalActiveWindow
cycleRoot
the current focus cycle root.
Parameters: cycleRoot the focus cycle root to return from getCurrentFocusCycleRoot and getGlobalCurrentFocusCycleRoot
window
to become
the focused {@link Window}.
Parameters: window the Window to return from getFocusedWindow and getGlobalFocusedWindow
Parameters: owner the Component to return from getFocusOwner and getGlobalFocusOwner
See Also: requestFocus requestFocusInWindow
Parameters: focusOwner the Component to return from getPermanentFocusOwner and getGlobalPermanentFocusOwner
See Also: requestFocus requestFocusInWindow
Window
, the default
focus component becomes the focus owner and the focus cycle
root is not changed.
Parameters: comp the component used as part of the focus traversal.
Window
, the default
component of this window becomes the focus owner and the
focus cycle root is not changed.