4 votes

Java Swing : Ctrl+F1 ne fonctionne pas globalement, mais chaque autre combinaison de touches

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.

2voto

Epaga Points 12717

Pour que cette question reçoive une réponse, voici la solution copiée de votre édition dans la question ;-)

Le 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.

0voto

dhiller Points 2046

Il se peut que le système d'exploitation réoriente le F1 clé ? Installez un écouteur de clé et voyez quels événements sont traités.

BTW : Il serait utile de modifier votre question et d'insérer un code testable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X