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:
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
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(); } }
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...
Partager