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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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