ProgressBar visible mais un peu tard..
bonjour,
je vous explique le soucis,
j'ai une interface graphique avec un bouton valider.
En cliquant sur ce bouton, je voudrais faire apparaitre une progressBar en dessous :
Code:
1 2 3 4 5
|
ProgressBar progressBar = new ProgressBar(groupActif, SWT.INDETERMINATE);
progressBar.setMinimum(0);
progressBar.setMaximum(20);
progressBar.setBounds(new Rectangle(230, 140, 120, 25)); |
la progressBar apparait bien comme il faut, nickel.
mais le soucis, c'est que juste après avoir mis cette progressBar, je veux faire un traitement, qui lance un pool de threads :
Code:
1 2 3 4 5 6 7 8 9 10
|
/* on crée un pool de thread pour pinger les adresses */
ExecutorService executor = Executors.newCachedThreadPool();
List<Future> listeFuture = new ArrayList<Future>();
for (int i=0 ; i<nbBus ; i++){
numTBA = listeBus.get(i).getTba();
listeFuture.add(executor.submit(new ThreadPing(numTBA)));
} |
Ces thread peuvent durer jusqu'à 3 secondes, et une fois ces 3 secondes ecoulées, je recupere des données, que j'affiche sur l'interface :
Code:
1 2 3 4
|
groupActif.setText("Confirmer");
cLabel = new CLabel(groupActif, SWT.NONE);
... |
Les traitements avec les threads marche très bien, une fois qu'ils sont fini j'ai bien le nouvel affichage qui se fait, mais le probleme c'est que la progressbar n'apparait que lorsque tous les autres elements sont chargés et que les threads sont finis, en bref elle sert à rien..
comment se fait il que aucun des elements que j'ajoute a mon Group courant dans le listener ne s'ajoute tout de suite et attende que mon traitement se finisse ?
j'ai essayé avec
Code:
1 2 3 4
|
isplay.syncExec(
new Runnable() {
public void run(){ |
en lancant un thread spécial... rien n'y fait...
quelqu'un a une idée ?
(j'espere avoir été clair, le code fourni est un exemple)
merci d'avance