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 :

comment associer la touche Enter à un bouton


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut comment associer la touche Enter à un bouton
    salut,
    je voudrai savoir comment faire pour associer la touche Enter aux boutons de ma fenetre. c'est à dire, j'aimerai que lorsque je suis entrain de remplir un champ de texte par exemple, que le focus se place deja sur un bouton par defaut et j'aurai juste à appuyer sur la touche Enter, au lieu de cliquer necessairement sur le bouton. aussi que je puisse avoir la possiblité de selectionner un autre bouton en utilisant la touche tabulation.
    quelqu'un à une idée ?
    merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Bonjour,

    tu ajoute un keyListener et si l'utilisateur appuie sur la touche entrer, tu fais appel à la même méthode que ton bouton

  3. #3
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    une autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JButton enter = new JButton("Entrer");
    enter.setMnemonic(KeyEvent.VK_ENTER);
    et le tour est joué!!!!

  4. #4
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut
    pour rappel, c'est une interface que tu dois implementer (Keylistener) donc tu dois redéfinir les méthodes de celle-ci. En l'occurence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void keyPressed(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    public void keyTyped(KeyEvent e){}
    Ensuite soit tu remet ton traitement dans la méthode qui t'intéresse ou soit tu simule un click sur le bouton qui déclenche l'événement souhaité

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    C'est vrai c'est plus simple et plus rapide, j'y avait pas pensé

  6. #6
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut
    +1
    Rapide, simple, efficace !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    merci à tous de m'avoir repondu aussi rapidement

    je me met, de suite, à tester differentes methode

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    un petit ajout:
    Je ne suit pas sure que le doclick()soit plus rapide à l'execution:
    sans le doclick
    keyEvent->uneAction()
    ActionEvent->unAction()
    plus rapide que:
    avec le doclick
    KeyEvent->ActionEvent->uneAction()
    ActionEvent->unAction()
    après tu fait comme tu veut...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    j'ai pas encore fini de tester, mais j'ai l'impression que dans les differentes methodes proposées, la touche Enter est fixée à un bouton unique, or moi je voudrai que cela se fasse de façon dynamique par rapport à la position du focus. c'est à dire un appuie sur la touche Enter, declenche d'abord une verification de la position du focus, et seul l'evenement associé au bouton où se trouve le focus sera lancé.

    ex: si j'ai 2 boutons, supposons que par defaut le focus se trouve sur le bouton1 et donc la touche Enter est associée à cet instant au bouton1. mais lorsque je passe le focus sur le bouton2, alors il faudrat qu'à cet instant la touche Enter soit associé au bouton2, donc declenche l'evenement associé au bouton2

    voilà un peu ce que je veux en fait, je ne sais pas si j'ai été assez clair

  10. #10
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    tu peut recuper le bouton avec la methode isFocusOwner() applicable à un bouton et qui renvois un boolean;Mais si tu as une centaine de boutons c'est dificilement jouable.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            JButton unBouton = new JButton("test");
            unBouton.addKeyListener(
                    new KeyAdapter() {                    
                        public void keyTyped(KeyEvent e) {                        
                            int code = e.getKeyCode ();
                            if (code == KeyEvent.VK_ENTER){
                                this.actionPerformed(new ActionEvent(e.getSource(),e.getID(),((JButton)e.getSource()).getActionCommand())
                                                    );//si tu a fait addActionListener(this);
                            }                    
                        }                    
                    }
            );

  12. #12
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    atha2, j'ai essayé ton code, en applicant ton keyListener sur chacun de mes boutons, mais quand je place le focus sur un bouton quelconque et que j'appuie sur la touche Enter, rien ne se produit. je suppose que je n'ai plus à implementer encore l'interface KeyListener, etant donné qu'en integrant ton code dans le mien, je n'ai eu aucun message d'erreur. bon à moins que je l'ai mal utilisé, car je l'ai ajouté dans le constructeur de ma JFrame.
    excusez-moi si je parait nul, mais je suis vraiment debutant et je veux apprendre.
    merci

  13. #13
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    excuse moi je me suis trompé
    J'ai modifié

  14. #14
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Par défaut, c'est la barre d'espace qui active le bouton qui a le focus. Tu dois pouvoir changer cela à l'aide d'une propriété, mais je ne la connais pas.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    salut
    merci pour ta reponse. maintenant en ajoutant ton code modifié j'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    the method actionPerformed(ActionEvent) is undefined for the type new KeyAdapter() {}

  16. #16
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    modifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    this.actionPerformed(new ActionEvent(e.getSource(),e.getID(),((JButton)e.getSource()).getActionCommand())
                                                    );
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaClass.this.actionPerformed(new ActionEvent(e.getSource(),e.getID(),((JButton)e.getSource()).getActionCommand())
                                                    );
    ou MaClass est le nom de ta class mais pas de l'instance.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    avec KeyTyped() ça ne passait pas, j'ai alors remplacé par KeyPressed() et ça marche très bien. je te remercie beaucoup, atha2, pour ton code et aussi merci à tous ceux qui m'ont repondu.
    cependant j'aimerai quand meme savoir, atha2, pourquoi il fallait ajouter le nom de ma classe devant le this, pour que le message d'erreur ne s'affiche plus ?

  18. #18
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    le MaClass.this permet de récuperer l'instance de la classe courante lorsque l'on est dans une classe anonyme.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    ok, j'ai compris. encore merci beaucoup pour ton aide.
    je reviendrai surement, sur le forum, si j'ai un autre problème
    bien à toi et à plus

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

Discussions similaires

  1. Bouton par défaut sur pression de la touche ENTER
    Par gufra dans le forum GWT et Vaadin
    Réponses: 4
    Dernier message: 15/11/2007, 17h46
  2. Comment créer un appuie de touche enter sans gestionnaire événement ?
    Par Telemak dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 03/09/2007, 21h23
  3. bouton submit et touche enter
    Par Arcann dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2007, 13h08
  4. Réponses: 3
    Dernier message: 16/02/2007, 17h21
  5. Réponses: 4
    Dernier message: 30/08/2006, 18h15

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