[JAVA] Probleme de KeyListener

Fermé
Ogtraba - 4 mai 2007 à 14:05
 mohamed - 31 mars 2013 à 19:14
bonjour,
Je programme sur eclipse.
voila j'ai ecrit le code qui suit pour rafraichir ma fenetre :

KeyListener Refresh = new KeyListener(){

public void keyPressed(KeyEvent e){
System.out.println(e.getKeyCode() );
if (e.getKeyCode() == KeyEvent.VK_F5){
PanelPrincipal.revalidate();
}
}
...
}//keyListener

PanelPrincipal.addKeyListener(Refresh);

Or il ne ce passe rien. comme vous pouvez le voir j'ai mit un System.out.println(); pour voir s'il se passé qqch. Et quelque soit le bouton du clavier que je tape il ne s'affiche rien.
A voir également:

10 réponses

Utilisateur anonyme
8 mai 2007 à 08:23
Salut!

Pour fiddy: pourquoi placer le KeyListener sur la JFrame lorsqu l'on a juste besoin de celui-ci sur le panel?

Pour Ogtraba: pour qu'un KeyListener soit actif sur un JPanel, tu dois rendre ton JPanel "focusable" puis lui donner le focus.

Exemple:

JPanel panel = new JPanel();
panel.stFocusable(true);
panel.requestFocus();
//A partir de maintenant, ton JPanel peut gérer les KeyEvent via le KeyListener


;-)
HackTrack
19
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
9 mai 2007 à 09:40
Si tu refais un new des JComboBox, il ne devrait plus y avoir de problèmes
3
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 mai 2007 à 16:55
Tu as essayé de faire avec une autre touche ?
Par example une touche qui ne soit pas "spécial", le 'a' par exemple.
Car il se peut que F5 soit déjà réservé pour un comportement par défaut pour une fenêtre... (je n'y crois pas trop mais on ne sais jamais)

EDIT : remarque idiote en faite puisque même si c'est le cas le sysout devrait s'effectuer.


Et si tu fais :

PanelPrincipal.addKeyListener(
new KeyListener(){

public void keyPressed(KeyEvent e){
System.out.println(e.getKeyCode() );
if (e.getKeyCode() == KeyEvent.VK_F5){
PanelPrincipal.revalidate();
}
}
...
}//keyListener 

);



Il se passe toujours rien ?

2
desolé pour le temps de reponse mais je n'est pas put essayer ta reponse avant ce matin.

helas cela n'a rien changer a mon probleme. Il semblerai que mon programme ne detecte pas les touches de mon clavier. j'ai essayer de recopier le code ds KeyRelease et KeyTyped mais ça ne change rein. est il possible que ce ne soit pas au bon endroi dans mon programme?
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 mai 2007 à 17:20
Il n'est peut etre tout simplement pas possible d'attribuer un écouteur sur un panel non ?

Sur un bouton, un label, un text, une fenetre.. ok, mais sur un panel je ne suis pas sur que l'on puisse.
Cela vient peut etre de là ?
(je n'ai jamais eu l'utilité de mettre un écouteur d'évênement sur un panel)

1
c'est impecable,

ça marche part contre pour réinnitialiser mes composants qui sont des JComboxbox je suis obliger de tuer le programme par dispose et de recréé une nouvelle fenetre.

Il n'existe pas une autre methode??
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
7 mai 2007 à 21:35
Fais plutot le KeyListener sur ta JFrame

public class Fenetre extends JFrame implements KeyListener {


...


public void keyTyped(KeyEvent e) {
panelPrincipal.repaint();
}

//implémente toutes les méthodes de l'interface KeyListener ou tu peux utiliser un canevas comme tu as fait.
0
merci,
je comprend mieux, pour quoi aucune des touches du clavier fonctionner. je vais essayer.
0
merci,

c'est noté.
0
heu... question bete comment on fait pour metre la balise resolu??
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 mai 2007 à 11:48
Regarde au début de la discution tu as une checkbox a cocher pour résolu et non résolu
0
bon je doit être aveugle,

je suis remonter jusqu'en haut de la page ou le nom de la discution apparet. Les seules checkbox qu'il y a sont celles de la barre de recherche.
A moins que ça vienne du fait qu'il y a des erreurs sur la page??
0
essayer ce code ca marche bien pour mois :

public void tabparentre()
{
Set forwardKeys = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
Set newForwardKeys = new HashSet(forwardKeys);
newForwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
newForwardKeys);
}
}
0