The Java Developers Almanac 1.4


Order this book from Amazon.

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

e612. Moving the Focus to the Next or Previous Focusable Component

The methods to move the focus to the next or to the previous focusable component are Component.transferFocus() and Component.transferFocusBackward().

This example modifies a component so that pressing the space bar or pressing F2 moves the focus to the next focusable component. Pressing shift space or shift F2 moves the focus to the previous focusable component.

    // Bind space and shift space
    component.getInputMap(JComponent.WHEN_FOCUSED).put(
        KeyStroke.getKeyStroke("SPACE"), nextFocusAction.getValue(Action.NAME));
    component.getInputMap(JComponent.WHEN_FOCUSED).put(
        KeyStroke.getKeyStroke("shift SPACE"), prevFocusAction.getValue(Action.NAME));
    
    // This key binding is required for text components. It hides the
    // default typed space key binding in a text component. If you don't
    // hide this key binding, typing the space key will insert a space into
    // the text component (as well as move the focus).
    // See e1003 Overriding a Few Default Typed Key Bindings in a JTextComponent for more details.
    component.getInputMap(JComponent.WHEN_FOCUSED).put(
        KeyStroke.getKeyStroke(new Character(' '), 0), "unbound");
    
    // Bind F2 and shift F2
    component.getInputMap(JComponent.WHEN_FOCUSED).put(
        KeyStroke.getKeyStroke("F2"), nextFocusAction.getValue(Action.NAME));
    component.getInputMap(JComponent.WHEN_FOCUSED).put(
        KeyStroke.getKeyStroke("shift F2"), prevFocusAction.getValue(Action.NAME));
    
    // Add actions
    component.getActionMap().put(nextFocusAction.getValue(Action.NAME), nextFocusAction);
    component.getActionMap().put(prevFocusAction.getValue(Action.NAME), prevFocusAction);
    
    // The actions
    public Action nextFocusAction = new AbstractAction("Move Focus Forwards") {
        public void actionPerformed(ActionEvent evt) {
            ((Component)evt.getSource()).transferFocus();
        }
    };
    public Action prevFocusAction = new AbstractAction("Move Focus Backwards") {
        public void actionPerformed(ActionEvent evt) {
            ((Component)evt.getSource()).transferFocusBackward();
        }
    };

 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
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
e620. Activating a Keystroke When Any Component in the Window Has Focus
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.