[JAVA] Probleme de KeyListener
Ogtraba
-
mohamed -
mohamed -
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.
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:
- [JAVA] Probleme de KeyListener
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
10 réponses
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:
;-)
HackTrack
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
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 :
Il se passe toujours rien ?
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 ?
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?
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
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??
ç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??
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.
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.
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);
}
}
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);
}
}