Bonjour à tous,
J'utilise SwingWorker pour gérer une progress bar.
Lorsque je la teste dans une class à part (JFrame) no soucis.
Par contre dès que je l'intègre dans mon application (une JFrame classique) je n'ai aucune progression.
Seulement le setProgress(100) à la fin du doInBackground.
En fait en regardant, dès qu'elle est intégrée, le listener n'est prévenu qu'a à la fin du doInBackground.
Comme si le setProgress(cpt) n'avait aucun effet.
Comme listener j'ai essayé la class SwingWorker elle même et la JFrame.
Dans les deux cas, ça ne fonctionne que en test.
Puis dans l'application:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class MonSwingWorker extends SwingWorker<Integer, String> { public boolean sortie= false; public Integer doInBackground() { int cpt= 0; try { while(cpt < 100) { Thread.sleep(100); cpt+= 5; setProgress(cpt); } } catch(InterruptedException e) { e.printStackTrace(); } setProgress(100); sortie= true; return cpt; } }Voici l'affichage de la console:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 swingWorker= new MonSwingWorker(); swingWorker.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { System.out.println("??"); if("progress".equals(evt.getPropertyName())) { System.out.println("--" + evt.getNewValue()); progressBar.setValue((Integer) evt.getNewValue()); } } }); swingWorker.execute(); while(!swingWorker.sortie);Une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4?? ?? --100 ??
Belle journée à vous
Partager