Bonjour,
Cela fait maintenant plusieurs heures que je bloque sur un problème concernant la mise à jour de l'affichage de ma JProgressBar en même temps que le téléchargment d'un fichier.

Si j'utilise "progressBar.update(progressBar.getGraphics());" cela fonctionne bien mais ça ralenti fortement le programme. De plus, l'affichage de la barre scintille.

En bref, mon problème est fortement similaire à ce post: http://www.developpez.net/forums/d11...-reutilisable/

Cependant, après avoir essayer SwingWorker et SwingUtility.invokeLater dans tous les sens et après avoir essayé d'utiliser les threads comme indiqué dans cet exemple (ftp://ftp-developpez.com/java/faq/gu...Progress2.java), je n'arrive toujours pas à mettre à jour l'affichage de la barre en même temps que le téléchargement.


Quelques détails sur le code utilisé pour le téléchargement:

Tout d'abord j'utilise HttpClient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
[...]
HttpGet httpget = new HttpGet("url");
try 
{
    HttpResponse response = httpclient.execute(httpget);
 
    nbBytesToTransfer = response.getEntity().getContentLength();
    response.setEntity(new CountingHttpEntity(
						response.getEntity(), new MyProgressListener()));
    byte[] data = EntityUtils.toByteArray(response.getEntity());
}
[...]
Dans ce code, la classe "new CountingHttpEntity(HttpEntity, ProgressListener)" est une classe qui me permet de compter le nombre d'octets téléchargés progressivement.


Ensuite "MyProgressListener" me permet d'afficher le nombre d'octets téléchargés.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class MyProgressListener implements CountingHttpEntity.ProgressListener 
{
	public void transferred(final long num) 
	{  	
                final int percentProgress = (int)((num*100)/nbBytesToTransfer);
                //progressBar.setProgress(percentProgress);
		//progressBar.update(progressBar.getGraphics());
		System.out.println(num + " bytes transferred...");   
	}
}
Jusque là tout fonctionne, la console m'affiche bien le nombre d'octets actuellement téléchargés.

Maintenant le problème est la mise à jour de la barre de progression en même temps que le téléchargement s'effectue.