Как я могу прослушивать нажатие / ввод клавиши TAB на Java? - PullRequest
22 голосов
/ 26 ноября 2011
    private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
    {
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    }

Какой самый простой способ в java-интерфейсе захватить клавишу табуляции без использования техники прослушивания с фокусом?

Ответы [ 2 ]

44 голосов
/ 26 ноября 2011

VK_TAB - константа табуляции.

Однако: No Tab key-pressed or key-released events are received by the key event listener. This is because the focus subsystem consumes focus traversal keys, such as Tab and Shift Tab.

См .: http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

Чтобы решить эту проблему, примените следующее к компоненту, который запускает ключевые события (например, TextArea):

.setFocusTraversalKeysEnabled(false)

Используя этот метод, вы должны явно обрабатывать обход фокуса. Кроме того, класс KeyEventDispatcher можно использовать для предварительного прослушивания всех ключевых событий.

0 голосов
/ 07 июня 2018

В случае редактируемого JComboBox этот работал для меня:

    txt.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.emptySet());
    txt.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
        if (event.getKeyChar() == KeyEvent.VK_TAB) {

        }
       }
    });
...