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