Перенос фокуса с одного компонента на другой - PullRequest
0 голосов
/ 12 января 2012

Как я могу сместить фокус с одного компонента на другой, когда я (программа) испытываю определенный случай?Подобно тому, как фокус смещается на следующее текстовое поле, когда в первом текстовом поле длина слова достигает 3.

Ответы [ 3 ]

2 голосов
/ 12 января 2012
  1. Подписаться на событие keyDown 1-го компонента.

  2. , если text length == 3 сместить фокус на другой компонент.не забудьте отменить эффект нажатия клавиши

  3. Я думаю, можно использовать метод focus() ИЛИ requestFocusInWindow().не помню точное имя.

Аналогично, на событие TextChanged можно подписаться.Итак, добавлены 3 символа ASA, сдвиньте фокус, используя шаг 3.

0 голосов
/ 16 июня 2016

Это хорошо работает ..

 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);
                            }
0 голосов
/ 12 января 2012

Вы можете сделать так:

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