Bonjour, je ne suis pas très familier avec les SwingWorker et les Thread bien malgré que j'ai lu plusieurs tutoriels, je n'ai simplement pas eu l'occasion de les utiliser.
J'ai créer une fenêtre qui affiche une barre de progression et une animation et j'aimerais que cette fenêtre, en fait la barre de progression soit mise à jour selon l'avancement du traitement qui serait fait dans une autre classe.
Je ne sais pas trop comment faire, j'ai essayé plusieurs options et aucune d'entre elles n'a fonctionnées, je me suis dit que je pouvais peut-être assigné deux SwingWorker, un qui exécuterai l'autre SwingWorker et ainsi je pourrais connaitre la progression.
Par exemple :
Et ensuite je passerais la référence du worker à ma fenêtre de progression qui s'occuperait d'appeler le traitement avec Execute().
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 // worker de la première classe private class Task extends SwingWorker<Void, Void> { /* * Main task. Executed in background thread. */ @Override public Void doInBackground() { // traitement à faire ici return null; } /* * Executed in event dispatching thread */ @Override public void done() { } }
Ou tout simplement actualiser ma fenêtre de progression dans le traitement avec setValue, en appelant ma méthode actualiser par exemple :
Je croit que la deuxième option est la plus simple...j'aimerais savoir comment vous feriez cela?
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 // autre classe qui s'occupe d'un traitement public static void main(String[] args) { while() { //....traitement.... p.actualize("working...",progress); } } //actualisation de la barre dans la fenêtre de progression public void actualize(String detail, int pos) { if (!_alreadyCreated) return; _lblStatusMessage.setText(detail); _progressBar.setValue(pos); }
Merci!
Partager