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 :
la progressBar apparait bien comme il faut, nickel.
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));
mais le soucis, c'est que juste après avoir mis cette progressBar, je veux faire un traitement, qui lance un pool de threads :
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
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))); }
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
en lancant un thread spécial... rien n'y fait...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 isplay.syncExec( new Runnable() { public void run(){
quelqu'un a une idée ?
(j'espere avoir été clair, le code fourni est un exemple)
merci d'avance
Partager