Encore un problème de JProgressBar
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.
Code:
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; } } |
Puis dans l'application:
Code:
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); |
Voici l'affichage de la console:Une idée?
Belle journée à vous