Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1553 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème de barre de progression

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de barre de progression

n°1527613
esox_ch
Posté le 12-03-2007 à 23:01:13  profilanswer
 

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
mood
Publicité
Posté le 12-03-2007 à 23:01:13  profilanswer
 

n°1528114
esox_ch
Posté le 13-03-2007 à 20:11:14  profilanswer
 

Personne ne sait?

n°1528614
esox_ch
Posté le 14-03-2007 à 19:34:17  profilanswer
 

Up

n°1528798
did-54
Posté le 15-03-2007 à 11:05:11  profilanswer
 

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

n°1529039
esox_ch
Posté le 15-03-2007 à 18:35:00  profilanswer
 

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

n°1529715
discmat
Posté le 16-03-2007 à 20:51:14  profilanswer
 

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

n°1529841
esox_ch
Posté le 17-03-2007 à 03:10:13  profilanswer
 

Merci je vais tenter cette voie alors :)

n°1542836
esox_ch
Posté le 14-04-2007 à 10:18:36  profilanswer
 

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

n°1543109
the real m​oins moins
Posté le 15-04-2007 à 21:35:32  profilanswer
 

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

n°1543113
esox_ch
Posté le 15-04-2007 à 21:49:39  profilanswer
 

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
mood
Publicité
Posté le 15-04-2007 à 21:49:39  profilanswer
 

n°1543118
the real m​oins moins
Posté le 15-04-2007 à 22:01:53  profilanswer
 

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

n°1543119
esox_ch
Posté le 15-04-2007 à 22:03:32  profilanswer
 

Toutafé :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème de barre de progression

 

Sujets relatifs
[PHP]Problème fonction[merise] Probleme d'heritage, MCD et sgbd mysql..
Problème de bouton animéproblème de résolution video dans navigateur.
[HTML] Probleme avec Border & Image[php]Problème de parametre
Probleme intégration de JDICproblème de comptage
un probleme dans mon code ?Problème avec GD
Plus de sujets relatifs à : Problème de barre de progression


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR