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 :

Activation JPopupMenu au clavier


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut Activation JPopupMenu au clavier
    Bonjour à tous,

    Je me suis rendu compte que dans la plupart des applications, les popup menus pouvaient s'activer au clavier par Shift+F10 ou encore par la touche spéciale à gauche de Ctrl (qui ne doit pas être présente sur tous les claviers).

    Ce mécanisme n'est pas présent par défaut dans Java (comme peut l'être la touche Alt avec les menus), alors j'ai décidé de le faire moi-même. Cependant je ne suis pas très satisfait de ce que j'ai fait, je ne suis pas sûr que ce soit vraiment la bonne manière de procéder.

    Voici ce que j'ai fait, dans une classe dérivée de JRootPane :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        InputMap inputMap = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actionMap = this.getActionMap();
     
        Action actionPopup = new AbstractAction()
        {
          private static final long serialVersionUID = 0L;
          public void actionPerformed(ActionEvent event)
          {
            JComponent component = CGUtilities.getFocusOwner();
            if (component == null) return;
            PointerInfo pointer = MouseInfo.getPointerInfo();
            Point compPosition = component.getLocationOnScreen();
            Point mouseLocation = pointer.getLocation();
            int x = mouseLocation.x - compPosition.x;
            int y = mouseLocation.y - compPosition.y;
            MouseEvent popupEvent1 = new MouseEvent(component, MouseEvent.MOUSE_PRESSED, 0, 0, x, y, 1, true);
            MouseEvent popupEvent2 = new MouseEvent(component, MouseEvent.MOUSE_RELEASED, 0, 0, x, y, 1, true);
            component.dispatchEvent(popupEvent1);
            component.dispatchEvent(popupEvent2);
          }
        };
     
        inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F10, KeyEvent.SHIFT_DOWN_MASK), "doShowPopup");
        inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_CONTEXT_MENU, 0), "doShowPopup");
        actionMap.put("doShowPopup", actionPopup);
    L'utilisation du dispatchEvent me gêne un peu, mais je n'ai pas trouvé d'autre moyen
    Quelqu'un a une meilleure idée ?

    Merci.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Bon, ben ça n'a pas l'air de passionner les foules

    Mais personne n'a hurlé au scandale non plus
    Donc je vais en déduire que ce n'est pas si crade que ça et que tant que je n'aurais pas de moyen simple de retrouver le JPopupMenu associée à un JComponent je serait obligé de procéder ainsi...

    Merci quand même de m'avoir lu.

    Fred.

Discussions similaires

  1. [XL-2010] Macro pour activer un raccourci clavier du ruban
    Par DVLOPE dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/05/2015, 13h33
  2. desactiver/activer touche clavier
    Par kamou dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 06/06/2007, 17h18
  3. [Gosu] Touches clavier activées
    Par aidefz dans le forum Ruby
    Réponses: 2
    Dernier message: 28/03/2007, 16h28
  4. [VB6] Comment Désactiver et activer le clavier avec VB6
    Par filton dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2006, 14h14
  5. Activer un bouton en appuyant sur une touche du clavier
    Par brasco06 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 16/02/2006, 23h47

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