Bonjour,
Je souhaite afficher une barre de defilement JProgressBar qui indique le traitement de fichier en cours ( lecture de fichier .txt ).
On m'a donc conseillé les threads et SwingWorker pour que l'interface graphique ne se fige pas et que ma barre de progression évolue en même temps que le traitement.
Mais voilà je suis bloqué je voudrais savoir où est mon erreur car ma barre de progression ne s'affiche qu'à la fin de mon traitement :s
J'ai donc deux threads différents :
- Un thread pour la JProgressBar
- Un thread pour le traitement de lecture ( le traitement long donc ... )
je les apelle ainsi :
Déja est ce que j'apelle les threads de la bonne façon ? et comment je les kill ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void setRepertory(String reponse) throws IOException { this.Repertory=reponse;//on definit le workspace // il faut lire le répertoire ThreadIG myThreadIG = new ThreadIG(); MonThread myThread = new MonThread(new Read(this,this.Repertory)); myThreadIG.setThread(myThread); myThreadIG.construct(); myThread.run(); myThreadIG.interrupt(); } // IL FAUT TUER LES THREADS comment on fait ? :)
voici le code de chacun des threads :
Thread pour le traitement long :
Thread pour la progressBar :
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 public class MonThread extends Thread { Read MyRead= null; public MonThread(Read r) { MyRead=r; } public void run() { try { MyRead.Updating(); } catch (IOException e) { // TODO Bloc catch auto-généré e.printStackTrace(); } } }
Enfin voila où j'en suis j'aimerai vos avis et vos suggestions pour que cette JProgressBar avance
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 public class ThreadIG extends SwingWorker { //... MonThread t=null; public Object construct(){ MaProgressBar monTest = new MaProgressBar(); while(this.t.isAlive()) { monTest.maBarre.setValue(/* il faut récupérer un indice qui indique * la progression du traitement... * */1); Thread.yield(); } return (Object)monTest; } //... public void setThread(MonThread t) { this.t = t; } }
Merciii
Partager