Progress Bar sous Java visual web - Java - Programmation
Marsh Posté le 15-03-2009 à 19:25:42
Pour ma part, je te conseille d'utiliser swingworker qui permet d'effectuer une tache en background et de rafraichir dans l'EDT(le thread ou se produise les evenements swing.)
Crée une classe extends JFrame qui contiendra la fenetre qui affiche la barre de progression et crée à l'intérieur une classe Task extends Swingworker qui fera le travaille que tu souhaite effectuer pendant ta tache.
Créer les deux fichiers java suivants. Le premier gère l'affichage graphique
JUploadProgress.java
Code :
|
TacheAEffectuer.java
Code :
|
Dans ton programme principal invoque une tache a effectuer
Code :
|
Marsh Posté le 25-09-2009 à 12:30:22
L'utilisation du SwingWorker est effectivement une bonne solution... Mais celà implique de savoir l'utiliser.
Dans le principe, l'exemple fourni est correct puisqu'il fait bien la distinction entre ce qui doit être effectué ou non dans le Thread EDT. Par contre cette utilisation n'apporte rien de plus à l'alternative de créer un nouveau Thread. Il est préférable d'utiliser les méthodes progress() et publish() qui se chargent d'effectuer les raffraichissement dans le Thread EDT.
Pour utiliser pleinement le SwingWorker, il faut dans ce cas précis :
- le typer <Void,Integer>, car on passera des valeurs d'entiers à la progressBar
- surcharger la méthode progress() pour raffraichir la progressBar
- effectuer des appel à publish() pour poster les valeurs à raffraichir
Marsh Posté le 15-03-2009 à 14:25:21
Bonjour a tous,
j'ai une application visual web dans laquelle je voudrais introduire une progress Bar qui soit raffraichit a chaque nouvelle iteration d'un boucle for.
Utilisant netbeans 6.5, je drag & drop un objet Progress Bar de la palette, et dans le code Java de la page, j'inser les lignes :
progressBar1.setRefreshRate(100); // rafraichit toutes les 100 ms
// A l'interieur de la loop
progressBar1.setProgress( i );
Seulement la progress bar ne se raffraichit qu'une seule fois que le processus est termine, je n'ai donc que 2 etapes : 0% et 100%.
Je voudrais savoir comment faire pour rafrachir cette maudite progressBar.
J'ai lu dans des forum qu'on peut creer un "Thread" a part pour la progress bar,mais cela n'etait pas pour des application web.
Est ce que quelqu'un pourrait m'expliquer quelle serait la solution a mon probleme ?
Merci beaucoup.