Bonjour à tous

Voilà je suis confronté à un petit problème que je ne vois comment résoudre
Donc je veux pouvoir déplacer une image avec des KeyListener
Voici un bout de 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
public void move() {
	// Déplacement
	x += dx;
	y += dy;
 
	// Ne pas dépasser les bords
	if (x < 1) x = 1;
	if (y <1 ) y = 1;
	if (x > 370) x = 370;
	if (y > 250) y = 250; }
 
 
public void keyPressed(KeyEvent e) {
	// Récupération de la touche enfoncée
	int key = e.getKeyCode();
 
	// Actions
	switch (key) {
		case KeyEvent.VK_LEFT :
			depLeft = true;
			break;
		case KeyEvent.VK_RIGHT :
			depRight = true;
			System.out.println("right pressed");
			break;
		case KeyEvent.VK_UP :
			depUp = true;
			break;
		case KeyEvent.VK_DOWN :
			depDown = true;
			break; }
 
	// MAJ
	update(); }
 
 
public void keyReleased(KeyEvent e) {
	// Récupération de la touche relâchée
	int key = e.getKeyCode();
 
	// Actions & MAJ
	switch (key) {
		case KeyEvent.VK_LEFT :
			depLeft = false;
			break;
		case KeyEvent.VK_RIGHT :
			depRight = false;
			System.out.println("right released");
			break;
		case KeyEvent.VK_UP :
			depUp = false;
			System.out.println("Up released");
			break;
		case KeyEvent.VK_DOWN :
			depDown = false;
			break; }
 
	// MAJ
	update();}
 
 
public void update() {
	// Initialisation du déplacement à 0
	dx = 0;
	dy = 0;
 
	// Déplacement
	if (depLeft) dx = -speed;
	if (depRight) dx = speed;
	if (depDown) dy = speed;
	if (depUp) dy = -speed; }

J'ai mis des tests d'affichage dans la console pour dentifier le probleme, et le voici :
Si j'appuie sur une touche (par ex RIGHT) puis sur une autre (par ex UP), quand je relache l'une des 2 touches, le code exécute les 2 keyReleased associés au 2 touches.

De plus, un test identique sur KeyPressed m'indique qu'elle est enfoncée tout le temps, mais dès qu'une des touches est relâchée, la ligne "right pressed" n'apparait plus, bref le systeme ne reconnait plus aucune touche enfoncée dès que l'une est relâchée...


J'avoue je bloque un peu
QQ a-t'il une idée du pourquoi du comment ? Peut-on contourner ce problème ?
Merci d'avance