将焦点从一个组件转移到另一个组件

时间:2012-01-12 10:23:20

标签: java swing focus jcomponent setfocus

当我(程序)遇到某种情况时,如何将焦点从一个组件转移到另一个组件?就像焦点在第一个文本字段中移动到下一个文本字段时,字长达到3。

3 个答案:

答案 0 :(得分:2)

  1. 订阅第一个组件的keyDown活动。

  2. 如果text length == 3将焦点转移到另一个组件。不要忘记撤消当前按键的影响

  3. 我猜focus()requestFocusInWindow()方法可以使用。不记得确切的名字。

  4. 同样,可以订阅TextChanged事件。因此,添加ASA 3字符,使用步骤3移动焦点。

答案 1 :(得分:0)

你可以这样做:

if(jTextField1.getText().length() == 2 ){ // if the req. length is 3
        // shift the focus to next text field
        jTextField2.requestFocusInWindow();
    }

答案 2 :(得分:0)

效果很好..

 Component currentFocusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
                            FocusEvent focusLostEvent = new FocusEvent(currentFocusOwner, 1005, true, destinationComponent);
                            FocusEvent focusGainEvent = new FocusEvent(destinationComponent, 1004, true, currentFocusOwner);                        
                            try
                            {
                                currentFocusOwner.dispatchEvent(focusLostEvent);
                                destinationComponent.dispatchEvent(focusGainEvent);
                            }
                            catch(Exception e)
                            {
                                Logger.logExceptionMessage(e);
                            }