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 :

KeyStroke.getKeyStroke Savoir quelle touche est appuyée


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut KeyStroke.getKeyStroke Savoir quelle touche est appuyée
    Bonsoir,

    Je travaille actuellement sur un projet de developpement d'une application.
    J'aurai besoin de savoir quelle touche est appuyée sur la fenetre et ce quel que soit l'objet selectionné.

    J'ai trouver sur internet qu'il existe une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
     
     
        inputMap.put(KeyStroke.getKeyStroke(KeyEvent.KEY_PRESSED,0), "numpad");
    rootPane.getActionMap().put(
            "numpad",
            new AbstractAction("numpad") {
              public void actionPerformed(ActionEvent actionEvent) {
                System.out.println("Touche Numpad");
     
              }
            });
    Et je me vois mal définir une action pour chaque touche ^^
    N'existe - t - il pas un moyen de recupérer la touche appuyée?
    Merci par avance pour vos reponses

  2. #2
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Je me suis peut etre mal exprimé

    Le code listé ci audessus permet d'assigner une action lors d'un appui spécifique sur une touche. Pour la touche du pavé numérique 0 il faudra mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_NUMPAD0,0), "numpad");
    Qui renverra donc sur cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rootPane.getActionMap().put(
            "numpad",
            new AbstractAction("numpad") {
              public void actionPerformed(ActionEvent actionEvent) {
                System.out.println("Touche Numpad");
              }
            });
    Or j'aimerai savoir quelle touche est appuyée Est ce possible? Si oui comment?
    Merci

  3. #3
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    c bon j'ai trouver

    je poste le code si jamais des personnes sont interessées

    Donc dans la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    rootPane.getActionMap().put(
                "alpha",
                new AbstractAction("alpha") {
                  public void actionPerformed(ActionEvent actionEvent) {
                    System.out.println("Touche alpha");
                    if(id.hasFocus()){
                   System.out.println("Affichage de la touche  appuyée :"+actionEvent.getActionCommand());
                    }
     
                  }
                });
    actionEvent.getActionCommand() donne la touche appuyée

    Bon c'est pas tout a fait la solution parfaite, je suis néamoins obligé de définir toutes les touches, mais bon....

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Après avoir un peu galèré, voici un bout de code qui résume le tout :

    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
    ...
    /* Recupere le pointeur vers la table des evenenments clavier "WHEN_IN_FOCUSED_WINDOW" */
    InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    /* Ajoute les evenement a surveiller */
    inputMap.put(KeyStroke.getKeyStroke('0'), "ENTREE"); // Binde les 2 touche "0", ne pas mettre des guillemets
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_NUMPAD1,0), "ENTREE"); // Ne binde que le "1" du pave numerique
    inputMap.put(KeyStroke.getKeyStroke('2'), "ENTREE");
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), "ENTREE");
    inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE,0), "ENTREE");
     
    /* Attribue les actions correspondantes */
    rootPane.getActionMap().put("ENTREE", new AbstractAction() {
    	public void actionPerformed(ActionEvent actionEvent) {
    		switch (actionEvent.getActionCommand().charAt(0)) {
    			case '0' : actionTouche0; break;
    			case '1' : actionTouche1; break;
    			case '2' : actionTouche2; break;
    			case 8  : actionToucheDelete; break;
    			case 10 : actionToucheEntree; break;
    			default: break;
    		}
    	}
    });
    ...
    Par contre, je n'ai pas trouvé à quoi correspond la ligne :

    Si quelqu'un pouvais éclairer ma lanterne

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/01/2007, 20h41
  2. savoir quelle page est affichée?
    Par theskel dans le forum Apache
    Réponses: 3
    Dernier message: 26/10/2006, 13h40
  3. Savoir quelle application est au premier plan
    Par David dans le forum Delphi
    Réponses: 5
    Dernier message: 08/10/2006, 17h38
  4. [Process] Comment savoir quelle application est ouverte ?
    Par samus535 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 25/08/2006, 15h01

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