Originariamente inviato da bircastri
codice:
textDescrizione.getInputMap().put(KeyStroke.getKeyStroke((char)KeyEvent.VK_TAB), "myTabAction");
Occhio che quel getKeyStroke (che riceve un char) fornisce un KeyStroke per un evento di key "typed", non "press".

KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0)

cioè l'altro getKeyStroke(int keyCode, int modifiers)

invece rappresenta un key "press". Prova questo, perché intuitivamente (non ho tempo ora di fare la verifica ...) una azione di tab non è un carattere che si digita in un testo.