Réactulisation d'un Jlabel
Bonjour,
voila j'ai fait une fonction qui efface le texte d'un label apres un temps imparti( ici 5000 ms).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
private void Switchlbl(JLabel label)
{
long t, t1=0;
t = System.currentTimeMillis();
while (t1<t+5000)
{
t1=System.currentTimeMillis();
}
label.setText("");
} |
Le seul probleme quand j'execute cette fonction, le texte deja placé dans le label ne s'affiche pas du tout. Le programe ne reactualise pas le champs.
Si je place des caracteres dans label.setText("azerty"); c'est ces caracteres qui s'affiche et je ne vois toujours pas le précedent contenu.
Avez vous une idéé pour faire marcher ce truc?
Merci
JeanMoul
re: [Stratégie] Réactulisation d'un Jlabel
Bonjour,
ton code fait une attente active :roll: c-à-d. que le thread qui exécute la méthode Switchlbl() (en passant le 1er caractère d'un nom de méthode est une minuscule) passe son temps à exécuter la boucle d'attente des 5s. Je pense que vu le comportement que tu décris, tu exécutes ce code dans le thread Event Dispatch Thread, donc ton IHM ne se rafraîchit pas. Il faut faire autrement, en utilisant un javax.swing.Timer :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
private void switchlbl(final JLabel label) {
Timer t = new Timer(5000,
new ActionListener() {
public void actionPerformed(ActionEvent ev) {
label.setText("");
}
});
t.setRepeats(false);
t.start();
} |