Hello à tous !
Je cherche à exécuter différentes actions lorsque la touche "Enter" du clavier est tapée. Quelles sont les mots réservés à cela ?
Merci d'avance,
Version imprimable
Hello à tous !
Je cherche à exécuter différentes actions lorsque la touche "Enter" du clavier est tapée. Quelles sont les mots réservés à cela ?
Merci d'avance,
Tu trouveras un exemple d'implémentation d'un KeyListener ici.
Concernant la touche Enter en particulier, une fois l'événement e récupéré, il suffira de faire :
Code:
1
2
3
4 int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { //mon traitement }
Merci pour ton aide ! Etant donné que je n'y arrive pas, je vais aller un plus loin dans l'explication de ce que je cherche à faire :
Voici le code (je mets que les bouts importants donc oubliez les appels de méthodes non affichées etc...)
J'ai un ActionListener lié à un bouton d'un interface graphique:
Action de EcouteChampTxt: appelée par le clic sur le bouton "bouton" :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Interface extends JFrame{ private static final long serialVersionUID = 1L; private EcouteChampTxt ecouteChampTxt; public static JButton bouton, bouton2; static Article a; public Interface (){ JPanel panneauBouton = new JPanel(); bouton = new JButton ("Recherche du mot clé"); bouton.setSize(10, 10); panneauBouton.add("South", bouton); ecouteChampTxt = new EcouteChampTxt(a); bouton.addActionListener(ecouteChampTxt);
Maintenant je voudrais exécuter le mêmeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package concordancesPack; import java.awt.event.*; public class EcouteChampTxt implements ActionListener { public String motCleEntre; private static Article article; public EcouteChampTxt(Article art){ article = art; } public void actionPerformed(ActionEvent ev){ motCleEntre = Interface.champMotCle.getText(); resultat(motCleEntre); } }
mais quand on appuie sur Enter.Code:
1
2
3 public void actionPerformed(ActionEvent ev){ motCleEntre = Interface.champMotCle.getText(); resultat(motCleEntre);}
;)
Je pense qu'il faut ajouter un KeyListener.
Puis, implémenter l'interface KeyListenerCode:bouton.addKeyListener(ecouteChampTxt);
Après si tu veux que l'action se déclenche avec la touche "Entrer" sans pour autant que le focus soit sur le bouton, il faut ajouter le listener à ta fenêtre et non à ton bouton. Mais le principe reste le même.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class EcouteChampTxt implements ActionListener, KeyListener { public String motCleEntre; private static Article article; public EcouteChampTxt(Article art){ article = art; } private void doThis() { motCleEntre = Interface.champMotCle.getText(); resultat(motCleEntre); } public void actionPerformed(ActionEvent ev){ doThis(); } public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) { if (key == KeyEvent.VK_ENTER) { doThis(); } } }
Ok, je vois, merci.
Encore une chose, quand tu fais :
Code:
1
2
3
4
5
6 public void keyTyped(KeyEvent e) { if (key == KeyEvent.VK_ENTER) { doThis(); } }
Ok, je vois, merci.
Encore une chose, quand tu fais :
C'est quoi key ? Comment je récupère cette variable qui est ce que j'ai tapé... ?Code:
1
2
3
4
5 public void keyTyped(KeyEvent e) { if (key == KeyEvent.VK_ENTER) { doThis(); } }
Je comprends bien que c'est le
int key = e.getKeyCode();
mais je ne vois pas quoi mettre à la place du "e"...
e est le KeyEvent passé en paramètre de ta fonction!
Code:public void keyTyped(KeyEvent e)
Comme ça ? Mais c'est de quel type "key" ? (désolée je suis une newbie)
Code:
1
2
3
4
5
6
7 public void keyTyped(KeyEvent e) { Key? key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { doThis(); } }
key est un int !
Code:
1
2
3
4
5
6 public void keyTyped(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { doThis(); } }
Merci j'avais trouvé en fait :)
Ca marche pas... :( Peux te montrer le code ?
Je viens de lire ceci dans la JavaDoc :
Le problème viens peut être de là. Essai de mettre ton code dans la méthode KeyPressed :Citation:
KEY_TYPED (is only generated if a valid Unicode character could be generated.)
Tiens nous au courant :)Code:
1
2
3
4
5
6 public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { doThis(); } }