Bonjour,
Voilà, dans une JPanel j'ai des items qui bougent, et je dois gérer le événements de la souris sur ces items.
J'ai une classe ItemMover qui implémente MouseAdapter, je réécris les méthodes mousePressed, mouseReleased et mouseDragged. Les deux premières méthodes marchent, les événements sont détectés sauf que pour mouseDragged, (qui est censé bouger les items du Panel) l'événement n'est pas détecté. Lorsque je laisse appuyé le bouton gauche de la souris, l'événement ne s'enclenche pas.
(Pour information, ItemMover est ajouté dans le constructeur du Panel.)
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 public class ItemMover extends MouseAdapter { private Item item; private ArrayList liste; public ItemMover(ArrayListe liste) { this.item = null; this.liste = liste; } // Vérifie si la position "cliquée" équivaut à un élément de la liste @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); for(Item a : liste) { if(a.rectangle().contains(e.getPoint()) && a!=null) { this.item = a; } } // Efface l'item si on double-clique dessus if(this.item != null && this.item.rectangle().contains(e.getPoint()) && e.getClickCount() == 2) { liste.remove(this.item); } } // Change de position l'item choisit, si item différent de null @Override public void mouseDragged(MouseEvent e) { super.mouseDragged(e); System.out.println("méthode mouseDragged appelée!!"); // Ce message ne s'affiche pas... if(item != null){ this.item.setPosition(e.getPoint()); } } // Quand la souris est relâchée l'item redevient null @Override public void mouseReleased(MouseEvent e) { super.mouseReleased(e); this.item = null; } }
Avez-vous une quelconque idée sur la raison (peut-être toute bête) de ce problème?
Merci d'avance.
Partager