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

Posted borter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 覆盖一些和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

以上是关于e612. Moving the Focus to the Next or Previous Focusable Component的主要内容,如果未能解决你的问题,请参考以下文章

e606. Determining Which Component or Window Has the Focus

e611. Setting Focus Traversal Keys for the Entire Application

e618. Validating a JTextField When Permanently Losing the Focus

e617. Determining the Opposite Component of a Focus Event

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

e609. Listening to All Focus Changes Between Components in an Application