Rafraîchir Label durant une boucle.

Résolu
sarahjtm Messages postés 29 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 15 janvier 2012 - 15 janv. 2012 à 13:59
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 26 janv. 2012 à 07:56
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.

4 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
16 janv. 2012 à 09:32
Bonjour.
Il faut que tu utilises des threads.
En java, le thread principal sert à mettre à jour les composants graphiques. Si tu fais un traitement "long" dans le thread principal, la partie graphique va être "figée".
Ton traitement de base de données doit être fait dans un thread, qui fera, la mise à jour de ton label.

Cdt
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 janv. 2012 à 08:21
Bonjour,

Je dirais que ton code fonctionne mais que ta temporisation est trop courte (un dixième de seconde). Essaye de mettre une tempo de 1000 et tu verras une différence je pense.
0
lail1001 Messages postés 4 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 16 janvier 2012
16 janv. 2012 à 21:33
bonjour,tt
probl.
lorsque j'ai utilisé la méthode setVisibe(true);
dans une boucle affin de actualiser mes classe aussi les composant de interface graphique (Jlabel...) je remarque que l'interface s'ouvre plusieurs fois mais je ne trouve pas une méthode de fermer l'avant dernière et laissé que la dernière exécuter
merci de m'aider

public class Index implements ActionListener {
Timer t = new Timer(600000,this);

Index() {
t.start();

}
int i=0;
public static void main(String args[]) {
Index td = new Index();

affich I= new affich();
I.getContentPane().setBackground(Color.BLACK);
JFrame currentFrame = I;

currentFrame.setVisible(false); currentFrame = I; currentFrame.setVisible(true);


}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 janv. 2012 à 07:56
Bonjour,

Autre question => Nouveau sujet.

J'accepte la réponse de laurent1024 à ta place.
0
Rejoignez-nous