hello,

j'ai un souci pour mettre à jour une progressbar pendant un traitement long. J'ai essayé d'implémenter swingworker, j'ai l'impression d'avoir fait ce qu'il faut mais... ça ne marche pas ! Le traitement s'exécute, mais la barre n'est mise à jour qu'à la fin.
Voilà quelques bouts de code :
le swingworker :
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
25
public class CalculerDelaunay extends SwingWorker<Set<Triangle>, Integer>{
 
	private List<Pnt> sommets ;
 
	public CalculerDelaunay(List<Pnt> sommets) {
		this.sommets = sommets;
	}
 
	@Override
	protected Set<Triangle> doInBackground()  {
		Triangulation t = new Triangulation(sommets);
		int i = 0 ;
		for (Pnt point : sommets ){
			t.delaunayPlace(point);
			setProgress((int) 100 *i/sommets.size());
			System.out.println((int) 100 *i/sommets.size()+1);
			i++;
		}
		return t.getListeTriangle().nodeSet() ;
	}
 
	protected void done() {
		setProgress(100);
	}
}
L'appel (situé dans un actionperformed d'un actionlistener):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
CalculerDelaunay calc = new CalculerDelaunay(sommets);
						calc.addPropertyChangeListener(new PropertyChangeProgressBar(fenetre.getProgressBar()));
						calc.execute();
et mon listener :
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
public class PropertyChangeProgressBar implements PropertyChangeListener {
	private JProgressBar progressBar ;
 
	private PropertyChangeProgressBar(){
 
	}
 
	public PropertyChangeProgressBar(JProgressBar pB){
		progressBar = pB ;
	    progressBar.setValue(0);
	}
	@Override
	public void propertyChange(PropertyChangeEvent evt) {
		String strPropertyName = evt.getPropertyName();
		System.out.println(strPropertyName);
	    if ("progress".equals(strPropertyName)) {
	      progressBar.setIndeterminate(false);
	      int progress = (Integer)evt.getNewValue();
	      progressBar.setValue(progress);
	    }
	}
}
Je ne vois pas bien d'où vient le problème... j'ai mis un syso dans mon listener, et il n'est appelé qu'à la fin !

Quelqu'un a t'il une idée ? S'il faut que je place plus de code, pas de problème.