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

StackOverflow https://stackoverflow.com/questions/138533

  •  02-07-2019
  •  | 
  •  

Question

J'ai un interface graphique avec un volet à onglets dans le nord. Plusieurs événements clés sont ajoutés à sa carte en 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 d'une barre d'outils a le focus, Ctrl + F1 n'a aucune fonction. Si un autre composant est activé (par exemple, JTree), Ctrl + F1 exécute l'action.

Le problème, c’est que ça marche partout si je change le Keycode en, par exemple. VK_F2 .

La clé F1 n'est utilisée nulle part ailleurs dans le programme.

Une idée?

Merci, Andr & # 233;

Modifier: Une recherche en texte intégral dans le code source Java a donné la réponse suivante: ToolTipManager enregistre la clé Ctrl + F1 pour afficher le texte de l'info-bulle si vous appuyez sur la combinaison de touches. Donc, si un bouton avec une info-bulle est activé, Ctrl + F1 est géré par le ToolTipManager . Sinon, mon action s'appelle.

Était-ce utile?

La solution

Pour obtenir une réponse, voici la solution copiée à partir de votre modification 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. Donc si   un bouton avec une info-bulle est activé,    Ctrl + F1 est géré par le   ToolTipManager. Sinon mon action est   appelé.

Autres conseils

Peut-être que le système d'exploitation redéfinit la clé F1 ? Installez un écouteur de clé et voyez quels événements sont gérés.

BTW: Cela vous aiderait si vous pouviez éditer votre question et insérer du code testable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top