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);
	}
}
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");
 
	}
}
le problème c'est que le Panel "Mon_Panel" n'a jamais le focus (les messages "getfocus" et "lostfocus" n'apparaissent jamais.

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.