Problème : dans un composant de texte Swing (JEditorPane, JTextPane, JTextArea) lors de l'appui sur la touche [TAB], comment faire pour que le focus passe au composant suivant au lieu d'insérer une tabulation ?

Solution :

JTextPane pane = new JTextPane();
Set<AWTKeyStroke> focus = pane.getFocusTraversalKeys(
    KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
Set<AWTKeyStroke> newFocus = new HashSet<AWTKeyStroke>(focus);
newFocus.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0));
pane.setFocusTraversalKeys(KeyboardFocusManager.
    FORWARD_TRAVERSAL_KEYS, newFocus);

Et pour le aller dans l'autre sens (backward focus) :

JTextPane pane = new JTextPane();
Set<AWTKeyStroke> focus = pane.getFocusTraversalKeys(
    KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
Set<AWTKeyStroke> newFocus = new HashSet<AWTKeyStroke>(focus);
newFocus.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,
    KeyEvent.SHIFT_MASK));
pane.setFocusTraversalKeys(KeyboardFocusManager.
    BACKWARD_TRAVERSAL_KEYS, newFocus);