码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-09-06 10:54:45      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:char   mod   padding   npe   shift   abs   table   detail   hat   

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

标签:char   mod   padding   npe   shift   abs   table   detail   hat   

原文地址:https://www.cnblogs.com/borter/p/9596092.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!