Bonjour bonjour !

nouveau problème aujourd'hui :

J'essaye d'inserer une image dans un panel à l'aide d' "ImageIcon". Seulement ,cette image va changer au cours de mon programme, en fonction d'une variable qui va être changée par un thread.

Voici mon JPanel :

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
 
 
public class MenuConditionsClimatiques extends JPanel{
 
	ConditionsClimatiques tConditionsClimatiques;
 
	private ImageIcon soleil = null; //image du soleil
	private ImageIcon flocon = null; //image du flocon
 
	private int tmpPeriodeAnnee;
 
	public MenuConditionsClimatiques(Horloge tHorloge) {
 
		soleil = new ImageIcon("images/soleil.png");
		flocon = new ImageIcon("images/flocon.png");
 
 
		// Création et lancement du thread de détéction des conditions climatiques
		ConditionsClimatiques tConditionsClimatiques = new ConditionsClimatiques(tHorloge);
		tConditionsClimatiques.start();
 
 
                tmpPeriodeAnnee = tConditionsClimatiques.getPeriodeAnnee();
 
 
		this.add(lImageTps);
	}
 
 
 
	//	surcharge de la fonction paint pour dessiner l'image
	public void paint(Graphics g){
		Graphics2D graph = (Graphics2D)g;
 
		tmpPeriodeAnnee = tConditionsClimatiques.getPeriodeAnnee();  // cette ligne fait planter l'affichage de mon label général !! (tout blanc)
 
 
		if (tmpPeriodeAnnee == 1)
		{
		//dessiner la carte
		soleil.paintIcon(this, graph, 0, 0);
		}
		else
		{
		flocon.paintIcon(this, graph, 0, 0);
		}
 
 
	}
 
 
}
Donc dans mon thread tHorloge, une fonction getPeriodeAnnee permet de récupérer la valeur de tmpPeriodeAnnee (1 ou -1) en temps réel. En fonction de cette valeur, on doit m'afficher une image flocon ou soleil.

Seulement, tout mon affichage plante si j'essaye de mettre getPeriodeAnnee dans la fonction paint pour récupérer la valeur retournée à tout moment.

Comment faire ? Utiliser la fonction repaint() ??
Le ImageIcon n'est pas une bonne solution ?

Merci pour votre aide, je manque énormement d'experience dans tout ce qui est affichage dynamique !


Pirokkk.