[Java]JProgressbar ne s'affichant pas
esox_ch
Messages postés
770
Statut
Membre
-
toto -
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 :
La methode qui est appelée pour l'envoie du fichier :
Est-ce que qqn voit la raison?
Merci
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:
- [Java]JProgressbar ne s'affichant pas
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
2 réponses
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
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