[Problème] Threads et JProgressBar
Bonjour,
J'ai un JProgressBar qui doit se remplir en fonction des opérations effectuées, et non pas selon le temps, comme dans tout les exemples qu'on trouve sur le web.
Voici la classe de ce progressbar
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import java.awt.*;
import javax.swing.*;
public class ProgressBar{
JProgressBar jpbProgressBar;
Thread monThread;
JFrame fraFrame;
int intLimiteProgressBar = 0;
public void initcomponents(){
// Création de l'interface
fraFrame = new JFrame("En cours de chargement");
JPanel panneau = new JPanel();
JLabel texte = new JLabel("Veuillez patienter pendant le chargement...");
jpbProgressBar = new JProgressBar(0, 100);
panneau.add("Center", jpbProgressBar);
panneau.add("Center", texte);
//Paramètre la fenêtre
fraFrame.getContentPane().add(BorderLayout.CENTER, panneau);
fraFrame.setSize(275,85);
fraFrame.setVisible(true);
fraFrame.setResizable(false);
fraFrame.setLocationRelativeTo(null);
fraFrame.setAlwaysOnTop(false);
// Création du thread
monThread= new Thread(new Avancer());
}//fin initcomponents
public void startprogressbar(int limite){
//Reprend la valeure en paramètre
intLimiteProgressBar = limite;
//Démarre le thread
monThread.start();
}//fin startprogressbar
public class Avancer implements Runnable{
public void run(){
jpbProgressBar.setValue(intLimiteProgressBar);
}//fin run
}//fin avancer
}// fin ProgressBar |
J'appelle donc la méthode startprogressbar(int) pour faire avancer la barre. Cependant, la seconde fois que j'appelle cette méthode, ça ne fait pas avancer mon thread.
Je suppose que c'est parce que j'essaie de le relancer une deuxième fois. Je ne l'ai pas arrêté car j'avais lu que on ne pouvais plus utiliser la méthode stop() des thread, et effectivement, ça ne marche pas chez moi.
Mes questions sont donc :
1) Quelle est la fonction pour mettre en pause un thread ?
2) Mon algorithme est-il vraiment correct ? La façon dont j'utilise mon thread, le mettre en pause comme ça ? Les threads sont tout nouveaux pour moi alors peut-être que je me trompe sur leur utilisation.
Merci d'avance à ceux qui prennent le temps de lire et peut-être même de répondre ^^