Key listener работает только при нажатии клавиши Enter. Не работает для других ключей

Этот код отлично работает, когда я нажимаю «Ввод», но не когда я нажимаю другие клавиши. Я добавил ключевое событие в редактируемый JComboBox, которое работает только при нажатии клавиши «Enter». Я также хочу добавить событие к другому ключу.

comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
    @Override
    public void keyTyped(KeyEvent e) {
        int keyChar = e.getKeyChar();
        if (keyChar == KeyEvent.VK_ENTER) {
            textField.requestFocus();
        }    
        if (keyChar == KeyEvent.VK_TAB) { // tried other key also such as shift,alt,decimal...  
            textField_2.requestFocus();
        }        
    }
});

person Zeya Rahman    schedule 10.03.2018    source источник
comment
не могли бы вы предоставить рабочий SSCEE sscce.org   -  person Sanyam Goel    schedule 10.03.2018


Ответы (1)


Некоторые клавиши, такие как TAB, которые используются для событий фокуса (например, переход от компонента к компоненту), уже используются подсистемой фокуса, поэтому вы не видите их в своем прослушивателе клавиш. https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html. Прочтите часть с пометкой Примечание к версии. В статье также предлагаются альтернативы тому, что вы можете сделать, чтобы захватить TAB и другие клавиши фокуса.

person Jeff Storey    schedule 10.03.2018