Bonjour,

J ai cree un custom SwingWorker avec dedans une "infinite progress bar". Typiquement l "infinite progress bar" apparait lors du lancement du SwingWorker, est mise a jour via le setProgress() du SwingWorker, et disparait a la fin de l axecution.

Tout marche parfaitement, sauf quand je veux attendre la fin de l execution du SwingWorker pour faire une autre tache ensuite: l "infinite progress bar" n est plus affichee, et n apparait qu a la fin de l execution du SwingWorker.

Tout ressemble pour moi a un probleme avec l Event Dispatch Thread, que je gere mal un truc, mais je n arrive pas a savoir ou... Auriez vous des idees?

Merci

Voici une partie de mon code simplifie pour avoir une meilleure idee:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
public class InfiniteTask extends SwingWorker<Boolean, Integer> implements PropertyChangeListener {
 
    InfiniteProgress infiniteProgress;
 
    public InfiniteTask() {
        // creation et lancement de la progress bar (c est un glassPane rajoute sur la fenetre principale, et qui affiche une animation lancee depuis un autre Thread)
// cette progress bar a ete inspiree ce la progress bar de Romain Guy
        infiniteProgress = new InfiniteProgress();
        infiniteProgress.start();
    }
 
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        if ("progress".equals(evt.getPropertyName())) {
            infiniteProgress.setPerc((Integer) evt.getNewValue());
        }
    }
 
@Override
    public void done() {
        infiniteProgress.stop();
    }
}
Dans mon code principale, je la lance comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
InfiniteTask task = new InfiniteTask(parent) {
                @Override
                public Boolean doInBackground() throws Exception {
                    // mes calculs avec des setProgress();
                }
            };
            task.execute();
 
// plus d affichage de la progress bar avec cette ligne
            task.get();
 
// autres calculs...