ProgressBar ne change pas sa valeur en Java

J'ai un problème étrange. J'ai mis une JProgressBar:

private JProgressBar progressBar;

public void foo()
{
    ...
    progressBar = new JProgressBar(0, 100);
    progressBar.setValue(0);
    progressBar.setStringPainted(true);
    ...
    contentPane.add(progressBar);
    ...
}

Mais il change seulement quand je mets la fonction setValue dans certains endroits dans le code, pas partout:

public void foo2()
{
    progressBar.setValue(100); //working
    if(...)
    {
        System.out.println("These instructions are executing"); //working
        progressBar.setValue(0);                                //not working
    }                             
}

Donc, ce que je fais mal? Pourquoi la deuxième instruction ne fonctionne pas?

Après l'examen de Comment Utiliser les Barres de Progression, de poster un sscce qui montre le problème.
est-il possible que foo2() n'est pas appelé sur le thread gui, le sens n'est pas appelé à partir d'un élément à l'écoute, et au lieu d'être appelés à partir de votre thread principal? Si oui, c'est la raison. Modifications de l'interface graphique doit se passer sur le thread gui. Voir SwingUtilities.invokeLater

OriginalL'auteur Hoome | 2011-04-17