Activating a Keystroke When Any Child Component Has Focus
Normally, a keystroke registered on a component is activated when the
component has the focus. This type of activation condition is called
WHEN_FOCUSED. It is possible to specify that a keystroke be
activated if it or any child or descendant component has the focus.
This type of keystroke activation condition is called
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT.
An example where this type of keystroke activation condition is
useful is in the case of a scrollpane that handles scrolling
navigation keystrokes even when the child component has the focus.
There are three types of activation conditions available:
WHEN_FOCUSED, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, and
WHEN_IN_FOCUSED_WINDOW. See
Activating a Keystroke When Any Component in the Window Has Focus for more details about these
activation conditions.
// To create an action, see Creating an Action
// Register keystroke
component.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
KeyStroke.getKeyStroke("F2"), action.getValue(Action.NAME));
// Register action
component.getActionMap().put(action.getValue(Action.NAME), action);
Post a comment