web-dev-qa-db-fra.com

Comment puis-je écouter une touche de tabulation enfoncée/saisie en Java?

    private void jTextField1KeyPressed(Java.awt.event.KeyEvent evt)
    {
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    }

Quelle est la manière la plus simple dans une interface graphique Java de capturer la touche de tabulation sans utiliser la technique d’écoute de focus?

21
stackoverflow

VK_TAB est la constante de tabulation.

Cependant: 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.

Voir: http://docs.Oracle.com/javase/tutorial/uiswing/events/keylistener.html

Pour résoudre ce problème, appliquez ce qui suit au composant qui déclenche les événements clés (par exemple, TextArea):

.setFocusTraversalKeysEnabled(false)

En utilisant cette méthode, vous devez ensuite gérer explicitement la traversée du focus. Sinon, la classe KeyEventDispatcher peut être utilisée pour pré-écouter tous les événements clés.

44
Peter

Dans le cas de JComboBox éditable, celui-ci a fonctionné pour moi:

    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) {

        }
       }
    });
0
realpac