Arrive le moment où la souris ne me suffis plus !

Je vais vous décrire un peu mon programme car je ne sais pas où placer mon (ou mes ) keylistener(s)

J'ai donc un JFrame , à l'interieur de celle-ci un JInternalFrame.
dans la JInternalFrame une collection de Jpanel.
dans un des ses JPanels plusieurs panels dont un sur lequel je veux pouvoir deplacé une petite bande de couleur avec les bouton haute et base du pad directionnel.

bougé la bande n'est pas un problème je le fait pour l'intant avec la soursi.

La question est où dois je écouter le clavier . car visiblement directement sur le panel ca ne marche pas (j'ai pourtant essayer d'avoir le focus) quand je passe ma souris dessus il me dit que j'ai le focus mais rien ne se passe lorsque je clic sur une touche.

Sacahnt que dans le futur les different panel de la JFrame pourrant chacun avoir un comportement spécial vis à vis du clavier comment dois je organiser tout cela ?

(le code du panel ou je voudrais écouter si en fait c'est un pb dans mon code:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
 
import javax.swing.JPanel;
 
 
public class GenePan extends JPanel implements KeyListener{
 
	PositionScrollPanel _posPan;
	PhaseScrollPanel _phasePan;
	ArrayList _geneList;
	int _period;
	BAGraphPan _parent;
	GenePan _me;
 
	GenePan(PositionScrollPanel posPan, PhaseScrollPanel phasePan, ArrayList geneList, int period, BAGraphPan parent)
	{
	super();
	this.setOpaque(false);
	_parent = parent ; 
	_posPan = posPan;
	_phasePan = phasePan;
	_geneList = geneList;
	_period = period;
	_me = this;
	this.setFocusable(true);
	this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight());
	this.addMouseListener(new GeneClic());
	this.addMouseMotionListener(new GeneMotion());
	}
 
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		drawGene(g);
	}
 
	class GeneClic implements MouseListener
	{
		public void mouseClicked(MouseEvent event) { }
 
		public void mouseEntered(MouseEvent event) { _me.requestFocus();}
 
		public void mouseExited(MouseEvent event) { }
 
		public void mousePressed(MouseEvent event) {
			_parent.getBAArea().dispatchEvent(event);
		}
 
		public void mouseReleased(MouseEvent event) {
			_parent.getBAArea().dispatchEvent(event);
		}
	}
 
	class GeneMotion implements MouseMotionListener
	{
 
		public void mouseDragged(MouseEvent event) {
			_parent.getBAArea().dispatchEvent(event);
		}
 
		public void mouseMoved(MouseEvent event) {
		System.out.println("c moi qui entend ! GENE");
		System.out.println(_me.isFocusOwner());
		_parent.getBAArea().dispatchEvent(event);
 
		}
	} 
 
	private void drawGene(Graphics g)
	{
		this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight());
		int pixPhase = (int)((this.getHeight()-10)* _phasePan.getPhase())+5;
 
		for (int i=0; i< _geneList.size(); i++)
		{
			GenePoint gp = (GenePoint)_geneList.get(i);
			int x, y;
			x = _posPan.getXPosition(gp.getPosition());
			y = _phasePan.getYPhase(gp.getPhase(_period));
			gp.setLocation(x, y);
			this.add(gp);
		}
	}
 
	public void keyPressed(KeyEvent event) {
		// TODO Auto-generated method stub
		System.out.println("préssé !");
	}
 
	public void keyReleased(KeyEvent event) {
		// TODO Auto-generated method stub
	}
 
	public void keyTyped(KeyEvent event) {
		// TODO Auto-generated method stub
	}
}