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

Interfaces Graphiques en Java Discussion :

KeyListener global à toute l'application


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut KeyListener global à toute l'application
    Bonjour,

    J'ai créé une interface dans une JFrame et je souhaiterais placer sur cette JFrame un KeyListener pour savoir quelles touches sont pressée.

    Le problème c'est que mon application comporte plusieurs composant dont un browser web intégré. Lorsque le focus se retrouve sur le browser web, le Listener ne fonctionne plus que je le place sur ma JFrame ou sur le composant web.

    Je voudrais donc savoir si il existe une méthode pour déclencher un évènement lorsque l'on presse une touche même si il n'y a pas le focus sur l'élément sur lequel est placé le Listener.

    En cherchant j'ai trouvé ce bout de code qui à l'air de fonctionner avec le touche F1 mais je ne le comprend pas et je ne sais pas comment modifier la touche ou savoir si il est possible de le modifier pour qu'il fonctionne avec n'importe quelle touche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F1"), "action F1");
    frame.getRootPane().getActionMap().put("action F1", new AbstractAction() {
        public void actionPerformed(ActionEvent ae) {
                    System.out.println("touche F1 pressée");
        }
    });
    Si il n'est pas possible de le rendre générique et qu'il faut absolument spécifier une touche, j'aimerai que ce soit la touche "Echap". Je suppose qu'il faut modifier le "F1", mais comment se nomme la touche en java ?

    Ou peut être existe t il une meilleure méthode ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Regarde du côté de la classe KeyEvent pour avoir le code des touches du clavier.

    La technique du couple InputMap/ActionMap, permet, pour un composant donné, là en l'occurrence, le JRootPane (je te laisse regarder la Javadoc), d'associer un raccourci clavier à une action.

  3. #3
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Ok, il fallait écrire "ESCAPE" en majuscule..

    Merci..

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

Discussions similaires

  1. Variable globale dans toute l'application
    Par RouRa22 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 09/02/2009, 18h10
  2. [Web.config] Title unique pour toute l'application
    Par Ant8386 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 05/06/2006, 13h59
  3. [ActionPerformed] Fermer toute l'application
    Par Invité dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 14/03/2006, 11h53
  4. Récupérer les composants visuels de toute l'application
    Par sessime dans le forum Composants VCL
    Réponses: 4
    Dernier message: 27/02/2006, 09h18

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