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?
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.
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) {
}
}
});