bonjour,
après avoir chercher longtemps sur internet comment fonctionne les fonctions paint et repaint, je n'arrive toujours pas à rafraichir une image dans un JPanel.
Notre code est le suivant:
dans une classe étendue de JPanel, on récupère une valeur tmp qui vient de la classe CC étendue de thread permettant de récupérer une valeur tmp EN TEMPS REEL. En fonction de cette valeur nous devons afficher l'image soleil ou flocon. Avec la fonction paint() actuel la première image s'affiche mais n'est pas rafraichit.
et notre classe thread donne:
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 public class MCC extends JPanel{ JLabel lImageTps = null; //ConditionsClimatiques tConditionsClimatiques; private ImageIcon soleil = null; //image du soleil private ImageIcon flocon = null; //image du flocon private int tmpPeriodeAnnee =1; public MCC(CC tCC) { // Création et lancement du thread tmp = tCC.getPeriodeAnnee(); soleil = new ImageIcon("images/soleil.png"); flocon = new ImageIcon("images/flocon.png"); this.add(lImageTps); } // surcharge de la fonction paint pour dessiner tous les elements de la carte public void paint(Graphics g){ Graphics2D graph = (Graphics2D)g; if (tmp == 1) { //dessiner la carte soleil.paintIcon(this, graph, 0, 0); } else { flocon.paintIcon(this, graph, 0, 0); } }
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 public class CC extends Thread { private int periodeAnnee; private Horloge tmpHorloge; public CC(Horloge tHorloge) { // Réference tmpHorloge sur Horloge tmpHorloge = tHorloge; } public void run () { try { while (this.isAlive ()) { if( (tmpHorloge.getMois() == 10) || (tmpHorloge.getMois() == 11) ) { System.out.println("flocon"); periodeAnnee=-1; } else { System.out.println("soleil"); periodeAnnee=1; } Thread.sleep (500); } } catch (InterruptedException e) { } } public int getPeriodeAnnee() { return periodeAnnee; } }
Merci.
Partager