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:
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.
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()); } [...]
Ensuite "MyProgressListener" me permet d'afficher le nombre d'octets téléchargés.
Jusque là tout fonctionne, la console m'affiche bien le nombre d'octets actuellement 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..."); } }
Maintenant le problème est la mise à jour de la barre de progression en même temps que le téléchargement s'effectue.
Partager