Bonjour à tous.
J'ai une incompréhension concernant les keyListener et j'aimerais si possible que vous puissiez m'éclairer un peu plus sur le sujet.
Je vous explique un peu comment est structuré mon (micro)programme.
J'ai un JPanel unique stocké dans un JFrame.
J'ai un menu dans une classe et à partir du moment où j'affiche ce menu, je souhaite pouvoir écouter le clavier.
class Lancement extends JPanel implements KeyListener
-> contient le main
class Menu extends Lancement implements KeyListener
-> Classe où je dois pouvoir récupérer les événements clavier.
Dans le constructeur de Lancement:
1 2
| panelEcran.setFocusable(true);
panelEcran.addKeyListener(this); |
Dans le constructeur de menu:
Cette classe affiche une image et des labels tous intégrés à mon JPanel nommé panelEcran. panelEcran est déclaré dans Lancement et est hérité.
Lorsque je lance le programme, dans la console, apparait aussi bien les évènements de Lancement que de Menu. Dès l'instant que je retire le focus, je ne capture plus rien. Logique. Si je remets le focus sur le panel, je capture à nouveau. Par contre, si je remets le focus sur mon objet Menu, ca ne marche pas et faire un setFocusable(true) sur l'objet Menu ne fonctionne pas non plus, ce qui me semble logique aussi.
Si je retire les 2 lignes du constructeurs de Lancement, et que je relance le programme, je ne capture plus rien.
Bref, je suis un peu perdu et j'y vais à taton depuis quelques heures. Si vous pourriez m'éclairer un peu.
Merci beaucoup.
Partager