Bonjour à tous,
Voilà, ça fait un ptit moment que je m'enlise devant un problème.
Je travaille actuellement sur une application graphique avec énormément de composants, des panneaux dans tous les sens, etc. J'aimerai (en fait, on m'a pas vraiment demandé mon avis) fournir aux utilisateurs des raccourcies clavier permettant d'effectuer des actions quelconques (F1, F2, F9, ESCAPE).
Au niveau de mon panel le plus haut (le dernier avant ma JFrame), j'ai donc fait ceci :
Donc, théoriquement, ca passe et c'est d'ailleurs le cas dans une majorité des cas. Néanmoins, il arrive que cela ne marche pas. En regardant l'élément qui a le focus quand cela ne marche pas, j'ai vu qu'il s'agissait tantôt d'un JScrollPane, tantôt d'un javax.swing.plaf.metal.MetalComboBoxEditor$1, etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F2"), "next"); getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F1"), "previous"); getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F9"), "validate"); getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("ESCAPE"), "cancel"); getActionMap ().put ("next", action1); getActionMap ().put ("previous", action2); getActionMap ().put ("validate", action3); getActionMap ().put ("cancel", action4);
Bref, je me dis que ces élément doivent peut-être eux-même (ou un de leurs parents) redéfinir ces raccourcis, ret donc, c'est le comportement par défaut qui passe et le mien passe à la trappe.
Donc, ma question est la suivante (en fait, plusieurs questions) :
Est-ce que j'utilise la bonne méthode ?
Si oui, comment remédier à ce problème ? (Dois-je matter tous les composants de mon appli de dégager un par un les comportements par défaut sur F2, F1, etc.. ?)
Si non, quel est la bonne méthode ?
A noté que mon application ne comporte pas de menu, donc adios les mnemonic et autres accelerateurs.
Voilà
Encore merci pour le temps passé à lire mon problème.
![]()
Partager