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 :

faire des racourcis clavier


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut [racourcis clavier] faire des ctrl+?
    Bonjour,

    J'ai fait une IG comprenant une JFrame, JMenuBar, et un JTabbedPane.

    Je voudrais ajouter des racourcis clavier : par exemple lors de l'appuie d'une touche, exécuter la commande qu'exécute un l'action d'un clique sur un menu par exemple.

    Mon probleme est le suivant : ou mettre mon évenement keyTyped ?

    Merci pour votre aide.

  2. #2
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Tu peux utiliser la méthode setMnemonic(char c); pour lier un jcomponent à une touche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        JButton button = new JButton("Button");
        button.setMnemonic('B');

  3. #3
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558

  4. #4
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    merci pour vos réponses.

    J'ai adopté cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Toolkit.getDefaultToolkit().addAWTEventListener(new MyListener(), AWTEvent.KEY_EVENT_MASK);
    // ...
    class MyListeners implements AWTEventListener {
      public void eventDispatched(AWTEvent event) {
        if (event.getID() == KeyEvent.KEY_PRESSED) {
          KeyEvent keyEvent = (KeyEvent) event;
          System.out.println("Key: " + keyEvent.getKeyCode());
        }
      }
    }

  5. #5
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    Bonjour, je réouvre cette vieille discussion car j'aimerais non plus avoir un racourci clavier simple mais un du type <CTRL> + <quelquechose>

    savez vous comment je pourais faire?

    Mon probleme est que AWTEvent ne représente qu'une touche et non pas la composition des touches préssée.

    Merci pour votre aide.

  6. #6
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    Personne n'a d'idée ?
    Dans le lien fourni par Claythest, il y est arrivé : à saisir des ctrl + .

    merci pour votre aide.

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il faut que tu vérifies la touche préssée mais également les modifiers (le retour de la méthode getModifiers doit être égale à KeyEvent.CTRL_DOWN_MASK )

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 914
    Billets dans le blog
    54
    Par défaut
    Cela depend de ce que tu veux faire, mais c'est probablement moins prise de tete d'associer un KeyStroke a une Action et d'installer une ActionMap et une InputMap.

    - Le KeyStroke permet de definir la combinaison de touches de ton racourcit.

    - L'Action permet de gerer de maniere centraliser les buttons, icones et menus.

    - L'ActionMap et l'InputMap permettent d'installer ca de maniere globale sans se prendre le chou (note : meme pas pas besoin d'utiliser ces classes-la si on ajoute l'Action a un JMenu).
    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

  9. #9
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    Merci sinok, j'essai d'implémenter ta solution.

    Mais je ne sais pas comment utiliser getModifiers() c'est une méthode de quelle classe?
    AWTKeyStroke ou ActionEvent ou InputEvent
    Et comment instancié cette classe?

    merci

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765

  11. #11
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    en effet, je cherchais beaucoup plus compliqué avec AWTKeyStroke.
    Merci.

    Ca donne ceci (tous simplement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public void eventDispatched(AWTEvent event) {
            if (event.getID() == KeyEvent.KEY_PRESSED) {
                KeyEvent k = (KeyEvent) event;
     
                if(k.getKeyCode()==KeyEvent.VK_N && k.getModifiers()==KeyEvent.CTRL_MASK) {
                    _m.loadNextSession();
                }
                if(k.getKeyCode()==KeyEvent.VK_P && k.getModifiers()==KeyEvent.CTRL_MASK) {
                    _m.loadPreviousSession();
                }
            }
        }
    merci encore

    ps : je vérifie KeyEvent.CTRL_MASK et non KeyEvent.CTRL_DOWN_MASK

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer des racourci clavier pour des chaine de caractères
    Par samworkflow dans le forum Windows XP
    Réponses: 3
    Dernier message: 11/05/2009, 19h12
  2. Comment faire des commentaires automatique (clavier) sur eclipse ?
    Par poulette3000 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/05/2007, 16h54
  3. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 17h08
  4. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 11h31
  5. Réponses: 8
    Dernier message: 18/09/2002, 04h20

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