Probleme d affichage lors d un thread
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:
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:
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... |