[Java]JProgressbar ne s'affichant pas

esox_ch Messages postés 770 Statut Membre -  
 toto -
Bonjour,

Je developpe en ce moment une petite applet permettant d'envoyer HTTP des fichiers et je desire pouvoir afficher en temps réel le pourcentage d'avancement du transfer. Le transfère marche mais la barre de progression ne s'affiche que quand le transfère est terminé, et le fait avec la valeur de 100%.

Voilà le code :

Définition :
       
       progressBar.setVisible(true);
        progressBar.setValue(0);
        progressBar.setIndeterminate(false);
        progressBar.setMinimum(0);
        progressBar.setMaximum(100);

        progressBar.paint(progressBar.getGraphics());


La methode qui est appelée pour l'envoie du fichier :

 private void pipe(InputStream in, OutputStream out) throws IOException {
        byte[] buf = new byte[10000];
        int nread;

        synchronized (in) {
            double done;
            double delta;

            while ((nread = in.read(buf, 0, buf.length)) >= 0) {
                out.write(buf, 0, nread);
                transfered += nread;

                delta = (double) (getFileLength() - getTransfered()) / getFileLength();
                done = (100 * (1 - delta));
                if(done%5 != 0) continue;
                progressBar.setValue((int) done);
                progressBar.getTopLevelAncestor().paint(progressBar.getGraphics());
            }
        }
        out.flush();
    }



Est-ce que qqn voit la raison?

Merci
A voir également:

2 réponses

Utilisateur anonyme
 
Salut!

C'est parceque ta JProgressBar n'a pas le temps de se raffraîchir entre deux modifications.

Tu dois utiliser la classe javax.swing.SwingWorker qui n'est pas livrée avec le JDK5 (mais une version repensée de celle-ci est livrée avec le JDK 6) mais que tu peux aller télécharger sur le site de Sun.

API de la classe (JDK6): https://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html

Tutoriel et exemple (JDK6): https://rom.developpez.com/java-swingworker/

Téléchargement du code source de SwingWorker: https://www.oracle.com/java/technologies/

;-)
HackTrack
4
toto
 
on écrit 'transfert !!!
fais un effort dans ton orthographe , relie toi!:

" d'avancement du transfer. Le transfère marche mais "
-1