public class DefaultKeyboardFocusManager extends KeyboardFocusManager
The default KeyboardFocusManager for AWT applications. Focus traversal is done in response to a Component's focus traversal keys, and using a Container's FocusTraversalPolicy.
Please see How to Use the Focus Subsystem, a section in The Java Tutorial, and the Focus Specification for more information.
FocusTraversalPolicy
, Component.setFocusTraversalKeys(int, java.util.Set<? extends java.awt.AWTKeyStroke>)
, Component.getFocusTraversalKeys(int)
BACKWARD_TRAVERSAL_KEYS, DOWN_CYCLE_TRAVERSAL_KEYS, FORWARD_TRAVERSAL_KEYS, UP_CYCLE_TRAVERSAL_KEYS
public DefaultKeyboardFocusManager()
public boolean dispatchEvent(AWTEvent e)
This method is called by the AWT event dispatcher requesting that the current KeyboardFocusManager dispatch the specified event on its behalf. DefaultKeyboardFocusManagers dispatch all FocusEvents, all WindowEvents related to focus, and all KeyEvents. These events are dispatched based on the KeyboardFocusManager's notion of the focus owner and the focused and active Windows, sometimes overriding the source of the specified AWTEvent. If this method returns false
, then the AWT event dispatcher will attempt to dispatch the event itself.
dispatchEvent
in class KeyboardFocusManager
e
- the AWTEvent to be dispatchedtrue
if this method dispatched the event; false
otherwiseKeyboardFocusManager.redispatchEvent(java.awt.Component, java.awt.AWTEvent)
, KeyboardFocusManager.dispatchKeyEvent(java.awt.event.KeyEvent)
public boolean dispatchKeyEvent(KeyEvent e)
Called by dispatchEvent
if no other KeyEventDispatcher in the dispatcher chain dispatched the KeyEvent, or if no other KeyEventDispatchers are registered. If the event has not been consumed, its target is enabled, and the focus owner is not null, this method dispatches the event to its target. This method will also subsequently dispatch the event to all registered KeyEventPostProcessors. After all this operations are finished, the event is passed to peers for processing.
In all cases, this method returns true
, since DefaultKeyboardFocusManager is designed so that neither dispatchEvent
, nor the AWT event dispatcher, should take further action on the event in any situation.
dispatchKeyEvent
in interface KeyEventDispatcher
dispatchKeyEvent
in class KeyboardFocusManager
e
- the KeyEvent to be dispatchedtrue
Component.dispatchEvent(java.awt.AWTEvent)
public boolean postProcessKeyEvent(KeyEvent e)
This method will be called by dispatchKeyEvent
. It will handle any unconsumed KeyEvents that map to an AWT MenuShortcut
by consuming the event and activating the shortcut.
postProcessKeyEvent
in interface KeyEventPostProcessor
postProcessKeyEvent
in class KeyboardFocusManager
e
- the KeyEvent to post-processtrue
dispatchKeyEvent(java.awt.event.KeyEvent)
, MenuShortcut
public void processKeyEvent(Component focusedComponent, KeyEvent e)
This method initiates a focus traversal operation if and only if the KeyEvent represents a focus traversal key for the specified focusedComponent. It is expected that focusedComponent is the current focus owner, although this need not be the case. If it is not, focus traversal will nevertheless proceed as if focusedComponent were the focus owner.
processKeyEvent
in class KeyboardFocusManager
focusedComponent
- the Component that is the basis for a focus traversal operation if the specified event represents a focus traversal key for the Componente
- the event that may represent a focus traversal keyprotected void enqueueKeyEvents(long after, Component untilFocused)
Delays dispatching of KeyEvents until the specified Component becomes the focus owner. KeyEvents with timestamps later than the specified timestamp will be enqueued until the specified Component receives a FOCUS_GAINED event, or the AWT cancels the delay request by invoking dequeueKeyEvents
or discardKeyEvents
.
enqueueKeyEvents
in class KeyboardFocusManager
after
- timestamp of current event, or the current, system time if the current event has no timestamp, or the AWT cannot determine which event is currently being handleduntilFocused
- Component which will receive a FOCUS_GAINED event before any pending KeyEventsdequeueKeyEvents(long, java.awt.Component)
, discardKeyEvents(java.awt.Component)
protected void dequeueKeyEvents(long after, Component untilFocused)
Releases for normal dispatching to the current focus owner all KeyEvents which were enqueued because of a call to enqueueKeyEvents
with the same timestamp and Component. If the given timestamp is less than zero, the outstanding enqueue request for the given Component with the oldest timestamp (if any) should be cancelled.
dequeueKeyEvents
in class KeyboardFocusManager
after
- the timestamp specified in the call to enqueueKeyEvents
, or any value < 0untilFocused
- the Component specified in the call to enqueueKeyEvents
enqueueKeyEvents(long, java.awt.Component)
, discardKeyEvents(java.awt.Component)
protected void discardKeyEvents(Component comp)
Discards all KeyEvents which were enqueued because of one or more calls to enqueueKeyEvents
with the specified Component, or one of its descendants.
discardKeyEvents
in class KeyboardFocusManager
comp
- the Component specified in one or more calls to enqueueKeyEvents
, or a parent of such a ComponentenqueueKeyEvents(long, java.awt.Component)
, dequeueKeyEvents(long, java.awt.Component)
public void focusPreviousComponent(Component aComponent)
Focuses the Component before aComponent, typically based on a FocusTraversalPolicy.
focusPreviousComponent
in class KeyboardFocusManager
aComponent
- the Component that is the basis for the focus traversal operationFocusTraversalPolicy
, Component.transferFocusBackward()
public void focusNextComponent(Component aComponent)
Focuses the Component after aComponent, typically based on a FocusTraversalPolicy.
focusNextComponent
in class KeyboardFocusManager
aComponent
- the Component that is the basis for the focus traversal operationFocusTraversalPolicy
, Component.transferFocus()
public void upFocusCycle(Component aComponent)
Moves the focus up one focus traversal cycle. Typically, the focus owner is set to aComponent's focus cycle root, and the current focus cycle root is set to the new focus owner's focus cycle root. If, however, aComponent's focus cycle root is a Window, then the focus owner is set to the focus cycle root's default Component to focus, and the current focus cycle root is unchanged.
upFocusCycle
in class KeyboardFocusManager
aComponent
- the Component that is the basis for the focus traversal operationComponent.transferFocusUpCycle()
public void downFocusCycle(Container aContainer)
Moves the focus down one focus traversal cycle. If aContainer is a focus cycle root, then the focus owner is set to aContainer's default Component to focus, and the current focus cycle root is set to aContainer. If aContainer is not a focus cycle root, then no focus traversal operation occurs.
downFocusCycle
in class KeyboardFocusManager
aContainer
- the Container that is the basis for the focus traversal operationContainer.transferFocusDownCycle()
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.