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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    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 éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    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 éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    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 éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    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 Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    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 éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    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 éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    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);
    			}
    		}
    	}

+ 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 Invité 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