Bonjour,
Je dois télécharger des fichiers sur internet. Donc j'ai décidé d'y insérer une petite barre de progression pour indiquer à l'utilisateur que le logiciel n'a pas planté mais qu'il travail ^^
Le problème est que quand la barre de progression est là et bien mon programme continue de tourner, ce qui pose problème car il n'a pas récupéré tous les fichiers pour pouvoir fonctionner correctement !
J'ai voulu essayer de "bloquer" le Task avec task.get(); (à côté de task.execute() qui appelle le doInBackGround() ) mais du coup la barre de progression ne s'affiche plus ...
y a t'il un moyen d'interrompre la suite de mon programme sans bloquer cette fichue barre ?
Voici mon code :
Voici mon PropertyChange
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // je crée ma barre de progression et je récupère les fichiers en même temps BarProgress progressBar = new BarProgress(root, repertorySequences); // normalement, une fois les fichiers téléchargés, je récupère une liste mais // il me la récupère alors que le téléchargement n'est pas fini ... donc ça coince List <Sequence> listSequence = progressBar.getListSequences();
Ma classe Task (SwingWorker)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void propertyChange(PropertyChangeEvent evt) { if ("progress".equals(evt.getPropertyName())) { int progress = (Integer) evt.getNewValue(); progressBar.setValue(progress); } }
Si quelqu'un pouvait m'aider je lui en serrais très reconnaissante ^^
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
26
27
28
29
30
31 class Task extends SwingWorker<Void, Void> { public Void doInBackground() throws IOException, SAXException { int nbLeaves = root.calcLeafs(); List<PhyloNode> nodes = root.getAllLeaves(root); int position = 0; GenBankSequence genBank = new GenBankSequence(); this.setProgress(0); while (position < nbLeaves && !isCancelled() && !isDone()) { Sequence seq = GenBank.getOnlyAccessionNumber(nodes.get(position), repertorySequence, listSequences); listSequences.add(seq); // je remplie la liste que je veux récupérer à la fin position++; this.setProgress((position*100)/nbLeaves); System.err.println((position*100)/nbLeaves); } this.setProgress(100); return null; } public void done(){ frame.dispose(); } }
Partager