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 :
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()
	{
 
	}
}
Et ensuite je passerais la référence du worker à ma fenêtre de progression qui s'occuperait d'appeler le traitement avec Execute().

Ou tout simplement actualiser ma fenêtre de progression dans le traitement avec setValue, en appelant ma méthode actualiser par exemple :
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);
}
Je croit que la deuxième option est la plus simple...j'aimerais savoir comment vous feriez cela?

Merci!