pb : paint et repaint d'une image à partir d'un thread
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.
Code:
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);
}
} |
et notre classe thread donne:
Code:
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.