Problème de barre de progression

Problème de barre de progression - Java - Programmation

Marsh Posté le 12-03-2007 à 23:01:13    

Bonjour,
 
J'ai fait une petite applet qui envoie un fichier par le réseau et je voudrais pouvoir afficher dans la barre de progression l'avancement du tout.
 
Donc dans ma classe uploader j'ai ce fragment de code  
 

Code :
  1. progressBar1.setVisible(true);
  2.         progressBar1.setValue(0);
  3.         progressBar1.setIndeterminate(false);
  4.         progressBar1.setMinimum(0);
  5.         progressBar1.setMaximum(100);
  6.         request = new ClientHttpRequest(UPLOAD_URL);
  7.         request.setProgressBar(progressBar1);
  8.         //je set les paramètres
  9.         //...
  10.         request.send();


 
Et dans la classe ClientHttpRequest ,plus particulierement dans send j'ai :
 

Code :
  1. private void pipe(InputStream in, OutputStream out) throws IOException {
  2.         byte[] buf = new byte[10000];
  3.         int nread;
  4.        
  5.         synchronized (in) {
  6.             double done;
  7.             double delta;
  8.             while ((nread = in.read(buf, 0, buf.length)) >= 0) {
  9.                 out.write(buf, 0, nread);
  10.                 transfered += nread;
  11.                 delta = (double)(getFileLength()-getTransfered())/getFileLength();
  12.                 done = (100*(1-delta));
  13.                 System.out.println(done);
  14.                 progressBar.setValue((int)done);
  15.                 progressBar.repaint();
  16.             }
  17.         }
  18.         out.flush();
  19.     }


 
Sur la console j'ai bien une progression entre 0 et 100, hors la bar de progression apparaît (avec la valeur 100%) uniquement quand le transfert est fini.  
Pouvez vous m'expliquer où je me trompe?
 
Merci


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 12-03-2007 à 23:01:13   

Reply

Marsh Posté le 13-03-2007 à 20:11:14    

Personne ne sait?

Reply

Marsh Posté le 14-03-2007 à 19:34:17    

Up

Reply

Marsh Posté le 15-03-2007 à 11:05:11    

boarf ca doit être un problème de threads... Entre celui qui s'occupe de l'affichage et celui qui s'occupe du traitement.

Reply

Marsh Posté le 15-03-2007 à 18:35:00    

Probablement .. Mais dans les examples que j'ai trouvé sur le net, ils utilisent jamais des classes runnable... Comme moi

Reply

Marsh Posté le 16-03-2007 à 20:51:14    

je pense aussi a un probleme de thread.
je suis moi aussi en train de realiser une applet d'upload et j'ai un problème en relation au debut :  
l'upload fesait freezer (geler) mon applet.
 
j'ai donc creer une thread dedié à l'upload du fichier (cause 1 upload = 1 thread pour permettre l'envoi multiple).
 
et aussi une thread dédié uniquement a faire des repaint de l'applet notement progress.repaint().
 
voila, je pense que ca va résoudre tes souci

Reply

Marsh Posté le 17-03-2007 à 03:10:13    

Merci je vais tenter cette voie alors :)

Reply

Marsh Posté le 14-04-2007 à 10:18:36    

Salut,  
Donc j'ai partiellement réglé mon problème en utilisant les threads. Maintenant la barre de défilement défile bien entre 0 et 100, sauf qu'elle arrive à 100 bien avant que le transfère finisse ... ça doit venir de la façon que j'utilise de calculer le pourcentage de fichier envoyé :
 

Code :
  1. private void pipe(InputStream in, OutputStream out) throws IOException {
  2.         byte[] buf = new byte[10000];
  3.         int nread;
  4.         synchronized (in) {
  5.             double delta;
  6.             while ((nread = in.read(buf, 0, buf.length)) >= 0) {
  7.                 out.write(buf, 0, nread);
  8.                 transfered += nread;
  9.                 delta = (double) (getFileLength() - getTransfered()) / getFileLength();
  10.                 done = (100 * (1 - delta));
  11.             }
  12.         }
  13.         out.flush();
  14.     }


 
Merci

Reply

Marsh Posté le 15-04-2007 à 21:35:32    

ha ben savoir programmer des i/o, des threads, et pas pouvoir calculer un pourcentage, ça fait un peu pitié tout de même :/

Reply

Marsh Posté le 15-04-2007 à 21:49:39    

Effectivement :heink: Je cherchais absolument un problème dans mes thread ou qqch du genre alors que c'était un problème qu'un débile moyen aurait su résoudre :heink:

 

Merci pour la claque :D


Message édité par esox_ch le 15-04-2007 à 21:49:56
Reply

Marsh Posté le 15-04-2007 à 21:49:39   

Reply

Marsh Posté le 15-04-2007 à 22:01:53    

enfin, tu l'avais pourtant dis toi-même: "ça doit venir de la façon que j'utilise de calculer le pourcentage de fichier envoyé" :D

Reply

Marsh Posté le 15-04-2007 à 22:03:32    

Toutafé :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed