The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.awt  [78 examples] > Focus  [16 examples]

e620. Activating a Keystroke When Any Component in the Window Has Focus

Normally, a keystroke registered to 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 any component (including itself) in the window has the focus. This type of keystroke activation condition is called WHEN_IN_FOCUSED_WINDOW.

Keyboard accelerators use this type of keystroke activation condition. For example, in many applications, regardless of which component has the focus, typing F1 in an active window causes a help window to appear.

There are three types of activation conditions available: WHEN_FOCUSED, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, and WHEN_IN_FOCUSED_WINDOW. When a key is typed, the focused component is checked for a registered keystroke to handle the typed key. If found, the action bound to the keystroke is invoked. If not found, the set of WHEN_ANCESTOR_OF_FOCUSED_COMPONENT keystrokes is searched for a handler of the typed key. WHEN_ANCESTOR_OF_FOCUSED_COMPONENT is described in e621 Activating a Keystroke When Any Child Component Has Focus. If none are found still, the set of WHEN_IN_FOCUSED_WINDOW keystrokes is searched for a handler of the typed key.

In non-WHEN_FOCUSED activated keystrokes, the source of the resulting action event is the component to which the keystroke is registered, not the focused component.

    // To create an action, see e855 Creating an Action
    
    // Register keystroke
    component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
        KeyStroke.getKeyStroke("F2"), action.getValue(Action.NAME));
    
    // Register action
    component.getActionMap().put(action.getValue(Action.NAME), action);

 Related Examples
e606. Determining Which Component or Window Has the Focus
e607. Preventing a Component from Gaining the Focus
e608. Preventing a Window from Gaining the Focus
e609. Listening to All Focus Changes Between Components in an Application
e610. Setting Focus Traversal Keys in a Component
e611. Setting Focus Traversal Keys for the Entire Application
e612. Moving the Focus to the Next or Previous Focusable Component
e613. Modifying the Focus Traversal Order
e614. Setting the Initial Focused Component in a Window
e615. Finding the Next Focusable Component
e616. Determining If a Focus Lost Is Temporary or Permanent
e617. Determining the Opposite Component of a Focus Event
e618. Validating a JTextField When Permanently Losing the Focus
e619. Removing the Focus from the Application
e621. Activating a Keystroke When Any Child Component Has Focus

See also: Colors    Components    Containers    Cursors    Drawing    Events    Frames    GridBagLayout    Images    Shapes    Simulating Events    Text    The Screen   


© 2002 Addison-Wesley.