Bonjour,
J'ai un problème avec la gestion de l'ecouteur clavier (KeyListener) ou plus exactement avec le focus de mon composant Panel.
voici la structure de ma fenetre principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Princ extends Frame{ private Panel Desk = new Panel(new BorderLayout()); private Panel Desk_Center = new Mon_Panel(...); private Info_Bar Info = new Info_Bar(); public Princ(...) { super(...); Desk.add(Desk_Center, BorderLayout.CENTER); Desk.add(Info, BorderLayout.SOUTH); } }le problème c'est que le Panel "Mon_Panel" n'a jamais le focus (les messages "getfocus" et "lostfocus" n'apparaissent jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38 public class Mon_Panel extends Panel implements KeyListener, FocusListener{ public Mon_Panel() { super(); this.addKeyListener(this); this.addFocusListener(this); requestFocus(); //ask the focus } public void keyPressed(KeyEvent arg0) { System.out.println("1_" + arg0.getKeyChar()); //VK_DOWN } public void keyReleased(KeyEvent arg0) { System.out.println("2_" + arg0.getKeyChar()); } public void keyTyped(KeyEvent arg0) { System.out.println("3_" + arg0.getKeyChar()); } public void focusGained(FocusEvent arg0) { System.out.println("getfocus"); } public void focusLost(FocusEvent arg0) { System.out.println("lostfocus"); } }
donc l'ecouteur clavier ne recoit aucun evenement.
si je deplace mes ecouteurs sur le Frame (Princ) tout fonctionne correctement.
Ma question est: comment faire pour que le Panel recoive le focus au lieu du frame? j'aimerai gerer les evenements clavier dans la classe "Mon_Panel".
Merci de votre aide.
Partager