J'ai un gui swing avec un panneau à onglets dans le nord. Plusieurs événements clés sont ajoutés à sa carte d'entrée :
InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");
Si le volet à onglets ou un autre bouton dans une barre d'outils a le focus, Ctrl + F1 n'a aucune fonction. Si un autre composant est focalisé (par exemple JTree), Ctrl + F1 exécute l'action.
Le problème est que cela fonctionne partout si je change le Keycode en par exemple. VK_F2
.
La clé F1 n'est utilisé nulle part ailleurs dans le programme.
Une idée ?
Merci, André
Edit : Une recherche plein texte dans le code source de java a donné la réponse : Le site ToolTipManager
enregistre la clé Ctrl + F1 pour afficher le texte de l'info-bulle si la combinaison de touches est enfoncée. Ainsi, si un bouton avec une info-bulle est activé, Ctrl + F1 est géré par le ToolTipManager
. Sinon, mon action est appelée.