Sì non funziona ma per un motivo molto semplice. Quella InputMap ottenuta con getInputMap() in realtà inizialmente è vuota.Originariamente inviato da JunkyFunki
ho provato con im.clear() prima dei metodi put ma non funziona
Ogni InputMap può avere opzionalmente una InputMap "parent" (vedi getParent() ). E Swing si basa molto su questo sistema di "parentela" delle InputMap. Certe categorie di componenti condividono una InputMap comune e "standard" che contiene dei key binding di "base". Le 3 InputMap che si possono ottenere da getInputMap() sono inizialmente vuote ma hanno come parent quella "base". Quindi in questo modo è facile aggiungere dei key binding specifici per un componente ma senza dover andare a toccare quella "base".
Il problema è togliere dei key binding. O vai nella InputMap parent e togli i key binding per TAB/frecce o nella InputMap specifica aggiungi dei key binding per TAB/frecce che hanno una Action che non fa una mazza.
Adesso ci penso un attimo e vedo cosa è meglio fare.