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 :

[clavier]Action sur touche Entrée


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut [clavier]Action sur touche Entrée
    Voila, j'ai un programme qui en gros m'affiche une grille.
    Pour cela, une JFrame s'affiche et là, on doit entrer la largeur de grille que l'on souhaite dans un JTextField, puis appuyer sur un JButton OK pour valider.
    Au lieu d'appuyer sur le bouton OK pour valider, je souhaite valider en appuyant sur la touche Entrée de mon clavier.
    Je sais vaguement qu'il faut utiliser les KeyListener, mais comment cela cohabite-t-il avec un ActionListener? Et comment faire pour n'écouter le Entrée que sur cette JFrame et pas à un autre moment dans le programme? Merci pour votre aide.

  2. #2
    Membre habitué Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Points : 163
    Points
    163
    Par défaut
    En effet le KeyListener te seras nécessaire.

    Tu n'as pas à avoir peur du ActionListener ceux sont deux listeners indépendants

    Ensuite pour savoir si c'est entrée ou une autre touche qui a été tapé dans ton JTextField tu n'as cas comparer le code de la touche reçue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void keyReleased(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER){
          //faire doClick(0) sur ton JButton
     }
    }

    Un tutorial Sun ici

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut
    ok, donc si j'utilise ce keylistener, je vais programmer la touche entrée pour cliquer sur mon bouton, ça veut dire qu'il doit toujours être présent, même non visible?
    dans mon programme, j'ai 2 mode d'affichage de grille, un mode manuel (la grille est vide, je la remplie manuellement par la suite) ou un mode auto (la grille est affichée et remplie à la création). Ce qui signifie que j'ai 2 JFrame et donc 2 JButtons différents. Comment programmer le keylistener dans ce cas?

    edit : j'ai ajouté le KeyListener, mais Eclipse m'a forcé à rajouter un KeyTyped et un KeyPressed. Je dois m'en servir?
    et pour le branchement de l'écouteur, c'est juste monbouton.addKeyListener(this)? Parce qu'en l'état actuel, ça ne marche pas.

  4. #4
    Membre habitué Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Points : 163
    Points
    163
    Par défaut
    Oui c'est normale l'interface KeyListener contient ces trois méthodes
    Je pense que tu devrais prendre un petit livre pour débuter Java ou bien il y a plein de sites répertoriés sur Developpez

    Sinon c'est sur ton JTextField que tu veux faire 'entrer' donc c'est sur le JTextField que tu dois faire le addKeyListener

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    et pour compléter j'ajouterais que pour être sûr que c'est bien ton textfield et pas une autre composant auquel et tu as ajouter un keylister, tu dois rajouter ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void keyReleased(KeyEvent e) {
      if(e.getSource()==monTextField){
        if (e.getKeyCode() == KeyEvent.VK_ENTER){
          //faire doClick(0) sur ton JButton
        }
      }
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut
    C'est bon, c'est résolu. Pour identifier lequel de mes 2 boutons émet, lors de l'affichage de l'un ou l'autre des JFrame, j'affectue 0 ou 1 à un entier s.
    Ca donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            public void keyReleased(KeyEvent e) {  
    		if (e.getKeyCode() == KeyEvent.VK_ENTER){  
    			if(t==0) {
    				bouton1.doClick(0);
    			}
    			if(t==1) {
    				bouton2.doClick(0);
    			}
    		}
    	}

  7. #7
    Membre habitué Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Points : 163
    Points
    163
    Par défaut
    Heu ... comment dire ... c'est crado

    Il faut faire comme te l'as montré iohack
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void keyReleased(KeyEvent e) {  
    		if (e.getKeyCode() == KeyEvent.VK_ENTER){  
    			if(e.getSource()==monTextField1) {
    				bouton1.doClick(0);
    			}
    			if(e.getSource()==monTextField2) {
    				bouton2.doClick(0);
    			}
    		}
    	}

  8. #8
    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
    Je sais que le sujet est résolu, mais il y a quelque chose à dire. Tu ne vas pas te faire c*** avec un KeyListener alors qu'un ActionListener suffit. Mais comment ça peut marcher, me diras-tu. C'est simple, si tu ajoutes un ActionListener sur un TextField, il te génère un événement lors de l'appui de la touche Entrée dans ce composant. C'est exactement ce que tu veux non ?
    Donc tu fais simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monTextField.addActionListener(this);
    public void actionPerformed(ActionEvent e) {
    if(e.getSource() == monTextField) {
    //....ton code
    }
    Voila c'est tout !

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

Discussions similaires

  1. [AC-2010] Executer code sur touche Entrée.
    Par fab.85 dans le forum VBA Access
    Réponses: 17
    Dernier message: 08/12/2013, 21h19
  2. Effacer un GtkTextView après appui sur touche Entrée
    Par Adenora dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 02/03/2013, 13h21
  3. Son sur touche entrée
    Par furtif1 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 06/05/2010, 23h03
  4. Lancer Action sur touche entrée
    Par maxime350 dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/07/2008, 18h08
  5. déclenchement d'un message box après click sur touche entrée
    Par new_wave dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h15

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