IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[JButton]Associer un raccourci clavier a certaines touches du clavier ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut [JButton]Associer un raccourci clavier a certaines touches du clavier ?
    Salut,

    j'au un certain ensemble d'actions associés a des boutons respectifs ( 14 en tout) et que j'aimerais leur associer des raccourcis clavier bien précis:

    - les touches F1 jusqu'a F12
    - la touche Entrée
    - la touche Echap

    Etant donnée que j'utilise le Jbutton , peut on me dire comment proceder etape par etape ?

    merci

  2. #2
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Tu utilise la méthode setMnemonic()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton.setMnemonic('VK_F1');

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    je ne pense pas que ca puisse marcher car VK_F1 n'est pas un caractere ni un entier , il faudra un argument compatible a setmnemonic mais lequel dans mon cas !

  4. #4
    Membre chevronné
    Avatar de Orian
    Inscrit en
    Août 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Août 2006
    Messages : 372
    Par défaut
    Exact, erreur de ma part...Utilise un KeyListenner alors.

  5. #5
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Vois aussi How to Use Key Bindings. Si tu comprends pas l'anglais dis-le et j'essaierai d'expliquer.

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Dans le cas d'un Menu et d'un MenuItem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    menu.setAccelerator(KeyStroke.getKeyStroke("F1"));
    Pour un bouton tu peux aussi essayer de lui associe une Action dont la propriete ACCELERATOR_KEY pointe sur le bon KeyStroke. Mais je n'ai jamais trop essaye si les saisies clavier sont correctement interceptees apres.

    Sinon, de maniere plus generale, l'ActionMap et l'InputMap (ce qu'a indique spekal) permettent en effet de rendre completement customisable l'interface graphique, y compris sur les boutons.
    De toute maniere tu vas avoir tendance a centraliser ce que tu fais dans des Action de maniere a eviter de dupliquer du code dans les menu et les boutons...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre éclairé

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Par défaut
    Merci Bouye pour cette explication.
    jlassiramzy, là où je voulais en venir, c’est que certains composants possèdent une default InputMap. En fait, à ma connaissance, tous les composants héritant de JComponent en possèdent une.
    Si un composant intercepte ton « F1 » avant le composant dans lequel tu as définis ton action ... c’est perdu pour toi (sauf s’il a la politesse de retransmettre l’événement).

    Pour ce qui est de ta remarque sur le « ALT+F1 » au lieu du « F1 », je dois admettre avoir été un peu distrait . Et je dois bien admettre que je ne vois pas du tout pourquoi ce « ALT » est là.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Par défaut
    je ne sais pas si j'ai bien saii mais je vais essayer de m'en inspirer.
    Mais au fait quelles seront les valeurs respectives aux touches F1..F12 si on raisonne en keystroke ?

  9. #9
    Membre éclairé

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Par défaut
    Il y a quelque temps, j'ai été confronté à un problème similaire pour lequel j'ai dû vider une InputMap (http://www.developpez.net/forums/sho...ferrerid=81280) cela t'aidera peut être.
    Pour ce qui est des valeurs respectives aux touches F1..F12, tant que je n'aurais pas trouvé pourquoi un KeyEvent.VK_F1 réagit à "ALT+F1" au lieu de "F1", je ne peux pas te dire.

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par jlassiramzy
    Mais au fait quelles seront les valeurs respectives aux touches F1..F12 si on raisonne en keystroke ?
    F1..F12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyStroke s = KeyStroke.getKeyStroke("F1");
    C'est indique dans la doc de la methode getKeyStroke(), hors touches modificatrices (alt, ctrl, etc...) il faut simplement utiliser le suffixe indique apres le VK_ dans la liste des constantes/keycode de KeyEvent.
    Une variante de cette methode accepte egalement un KeyEvent et une autre un keycode...

    Effectivement si tu as un composant plus prioritaire qui utilise deja cette touche ou si ton application utilise JavaHelp, ben tu auras du mal a l'utiliser toi-meme.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/11/2007, 14h36
  2. interdire certaine touche du clavier
    Par Renardo dans le forum Access
    Réponses: 14
    Dernier message: 19/08/2006, 20h27
  3. Associer un son ou une musique à une touche du clavier
    Par Revan777 dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/04/2006, 21h33
  4. désactiver certaines touches du clavier...
    Par youp_db dans le forum C
    Réponses: 4
    Dernier message: 23/01/2006, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo