Bonjour,

J'ai une fenêtre de dessin qui consiste en un JPanel sur lequel sont dessinés quatre objet Point contenus dans un ArrayList (Point étant une classe interne de ma classe principale, qui hérite de JPanel). A partir des ces 4 points j'ai tracé deux droites et une spline. Mon problème : cliquer sur un point et le déplacer, tout en mettant à jour le graphique.

Voici un bout de 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
 
public void mousePressed(MouseEvent e) {
	for (Point p : points) {
                // On cherche le point dont les coordonées sont situées près du clic
		if (((e.getX() > p.x - 5 && e.getX() < p.x + 5) && 
				(e.getY() > p.y - 5 && e.getY() < p.y + 5))) {
                        On attribue à un Point current les coordonnées de ce point
			current = new Point(p.x, p.y, p.c);	
		}
	}
}
 
public void mouseDragged(MouseEvent e) {
	if (current != null) {
		for (Point p : points) {
			if ((current.x == p.x ) && (current.y == p.y)) {
				p.x = e.getX();
				p.y = e.getY();
				p.c = current.c;
			}
		}
		this.repaint();
	}
}
 
public void mouseReleased(MouseEvent e) {
	current = null;
}
Le problème : le point sélectionné ne se déplace que de 4 ou 5 pixels, et la droite et la courbe sont dédoublées.

NB: la classe Point interne est une contrainte de l'exercice.

Merci d'avance pour votre aide.