[Java] Rafraîchir Label durant une boucle.

Fermé
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 - 15 janv. 2012 à 13:58
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 15 janv. 2012 à 15:39
Bonjour à tous,

Je vous explique tout ça, je dois mettre à jour un Label durant une boucle 'while' mais bien entendu, la Label se met à jour qu'à la fin parce que le code passe avant, voici en gros mon code :

JPanel Panel = new Panel();
add(Panel);
 
JLabel Label = new JLabel();
Panel.add(Label);
 
ResultSet res = stmt.executeQuery("SELECT * FROM table LIMIT 0 , 100");
 
while(res.next()) {
 
	Label.repaint();
	Thread.sleep (100);
	Label.setText("Invitation de " + res.getString(3) + "...");
 
}


J'aimerais que la Label se rafraîchisse durant la boucle et non pas une fois celle-ci terminée. Je précise tout de même que l'application est une applet.

Merci d'avance !
SoGeek.
A voir également:

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
15 janv. 2012 à 14:06
Il faut que tu fasses ta boucle dans un thread séparé du gestionnaire du Label.
En gros :

JPanel Panel = new Panel();
add(Panel);
 
JLabel Label = new JLabel();
Panel.add(Label);

new Thread()
{
    @Override
    public void run()
    {
        ResultSet res = stmt.executeQuery("SELECT * FROM table LIMIT 0 , 100");
        
        while(res.next())
        {
            Thread.sleep (100);
            Label.setText("Invitation de " + res.getString(3) + "...");
        }
    }
}.start();
4
SoGeek Messages postés 183 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 15 janvier 2012 18
15 janv. 2012 à 14:19
Salut KX et merci pour ta réponse, le problème c'est que c'est une applet et apparemment la gestion des threads est différente car cela ne marche toujours pas !
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
15 janv. 2012 à 15:39
Le principal problème des threads et des applets c'est qu'on ne peut pas avoir une classe qui hérite de ces deux classes en même temps, mais là ce n'est pas du tout ce que je fais, je créé juste un nouveau Thread pour un traitement particulier. Après bien sûr je n'ai pas testé mon code (il faudrait que j'ai le code complet de ton programme pour cela), donc il y a peut-être quelques ajustements à faire, en particulier j'ai enlevé le Label.repaint(); mais peut-être faudrait-il le garder...
0