choum20
Messages postés2Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention22 janvier 2009
-
21 janv. 2009 à 21:26
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 2011
-
22 janv. 2009 à 15:43
Bonsoir,
mon problème est que j'active du code à partir d'un actionPerformed sur un menu. Dans ce code, il y a une tempo et mon application freeze. Concraitement, mon programme semble correctement fonctionner car la boucle s'exécute et m'affiche un résultat à chaque tour dans l'invite de commande mais des images doivent bouger dans l'application et celles-là ne bougent pas.
Quand je clique, le menu reste ouvert et rien ne réagit. Si la boucle se stoppe, je vois le dernier résultat mais pas les intermédiaires.
[http://img168.imageshack.us/my.php?image=tempown3.jpg [img=http://img168.imageshack.us/img168/1198/tempown3.th.jpg]]
Voici mon code:
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 janv. 2009 à 07:25
Salut,
C'est que tu ne respecte pas les threads de SWING : SWING utilise un seul thread pour raffraichir les interfaces graphiques des programmes, si tu exécute du code dans ce thread là, ca bloque le raffraîchissement de ton interface graphique, et tu as donc l'impression qu'elle est freezée.
choum20
Messages postés2Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention22 janvier 2009 22 janv. 2009 à 12:54
Merci pour ta réponse,
pour passer mon problème j'ai changé mon code en utilisant plutôt un Timer comme suit:
<hr size="2" width="100%" /> public void tempo(int temps)
{
timer = new javax.swing.Timer(temps, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
//Mon code
}
});
timer.start();
}
<hr size="2" width="100%" />
J'espère que ça aidera quelqu'un d'autre ayant un tel problème.