Bonjour,

J'ai un petit soucis au niveau de mon code du coup je fais appelle à votre aide précieuse ^^

En fait j'ai un fichier texte qui contient un hashmap avec un couple <nom d'un motif, coordonnée du motif en point2D>.
Le but est de lire ce fichier texte et de dessiner des cercles suivant ces coordonnées.


Mais j'ai un soucis avec ma méthode paintComponent.
Je fais une boucle while pour parcourir mon hashmap et dessiner le cercle pour chaque coordonnées, seulement j'obtiens bien les différents nom de motifs mais au niveau des coordonnées, j'ai seulement les coordonnées du dernier motif qui sont pris en valeur pour toutes mes clés.

Ex:
lecture du hashmap:
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
motif1=1,1
motif2=2,2
motif3=3,3

et lorsque je suis dans paintComponent j'ai
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
motif1=3,3
motif2=3,3
motif3=3,3

du coup cela m'affiche seulement un cercle sur mon image.
J'ai essayé plusieurs bidouilles mais rien n'a fonctionné.

Voici le code que j'ai:

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package Profil;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Point2D.Double;
import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
 
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
@SuppressWarnings("serial")
public class Graph extends JFrame
{
 
	BufferedImage image;
	JPanel contentPane = new JPanel();
	JPanel panel = new JPanel();
	JPanel panel2= new JPanel();
	private int X0;
	private int Y0;
	private int X1;
	private int Y1;
	private double X;
	private double Y;
	private Point2D.Double valeur;
	private Object cle;
	int compteur=0;
	@SuppressWarnings("rawtypes")
	private HashMap map = new HashMap();
 
 
	public Graph(BufferedImage image, Slide slide)
	{
//L'objet Slide contient mon HashMap patterns avec les valeurs que j'ai lu depuis le fichier texte. J'ai vérifié au niveau de la lecture si les valeurs étaient correctes pour chaque clés et cela est le cas donc mon soucis ne vient pas de la lecture.
 
	this.map=slide.patterns;
	this.image=image;
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	this.setSize(900,700);
	this.setLocationRelativeTo(null);
	this.setResizable(false);
	this.setTitle("Slide");
	this.setContentPane(contentPane);
	contentPane.setLayout(new BorderLayout());
	contentPane.setBackground(Color.gray);
	panel.addMouseListener(new MouseAdapter() {
 
		@Override
		public void mouseClicked(MouseEvent click) 
		{
			compteur++;
			if (compteur==1)
			{
//Permet d'avoir des coordonnées de référence pour faire une translation car dans mon HashMap le motif de coordonnée (0,0) est au centre de l'image et non en haut à gauche
				X0=click.getX();
				Y0=click.getY();
			}
			else
			{
//Permet de se déplacer sur l'image et de retourner les coordonnées du curseur
				X1=click.getX();
				Y1=click.getY();
				repaint();
			}
 
		}
	});
 
	panel.setPreferredSize(new Dimension(700, 700));
 
	contentPane.add(panel, BorderLayout.WEST);
	panel.setLayout(new BorderLayout(0, 0));
	Zone zone = new Zone();
	panel.add(zone);
 
	panel2.setPreferredSize(new Dimension(200, 700));
 
	contentPane.add(panel2, BorderLayout.EAST);
	panel2.setLayout(new BorderLayout(0, 0));
 
	}
 
class Zone extends JComponent 
{
 
	   public void paintComponent(Graphics g) 
	   {
		  super.paintComponent(g);
	      Graphics2D surface =(Graphics2D)g;
	      surface.scale((int)(image.getWidth()/image.getWidth()),(int)(image.getHeight()/image.getHeight()));
	      surface.drawImage(image,0,0, this.getWidth(), this.getHeight(), this);
 
	      Ellipse2D cercle = new Ellipse2D.Double((int)X1-5,(int)Y1-5,10,10);
	      surface.setPaint(Color.RED); 
	      surface.fill(cercle);
 
	      @SuppressWarnings("rawtypes")
		Iterator iterator = map.entrySet().iterator();
	      while(iterator.hasNext())
	      {
	    	  @SuppressWarnings("rawtypes")
			  Map.Entry mapentry = (Map.Entry) iterator.next();
	    	  cle=mapentry.getKey();
//C'est ici que j'ai mon soucis, où valeur ne correspond qu'à la dernière valeur de mon Hashmap pour toutes les clés
	    	  valeur=(Double) mapentry.getValue();
	    	  System.out.println(valeur.getX()+"\t"+valeur.getY());
	    	  X=valeur.getX()/image.getWidth();
	    	  Y=valeur.getY()/image.getHeight();
	    	  surface.drawOval((int)X+X0-5,(int)Y+Y0-5,10,10);
 
 
	      }
 
 
 
	  	}
	}
}


Merci par avance de prendre le temps de me lire et de m'aider ^^