Problème d'affichage de progressBar
Bonjour tout le monde, j'ai déjà réussit à utilisé une progressBar avec sucés, mais aujourd'hui, sur un autre développement (en reprenant l'ancien code), je ne comprend pas pourquoi elle ne s'affiche pas correctement.:calim2:
Voici mon problème, j'exécute une action longue représenté par l'interface ActionInterface, celui ci me dis quand l'action est finit et donc quand je dois arrêter ma barre de progression. J'exécute ma barre de progression dans un thread à pare. Au moment du déclanchement de l'action, mon thread propre à ma progressBar fonctionne bien, l'action se déroule bien, mais ma fenêtre ne s'affiche pas (enfin qu'a la fin de l'exécution). Donc j'aurais besoin d'un petit coup de pouce pour m'aider.
Voici l'objet créé pour ma 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 44 45 46 47 48 49 50 51 52 53 54
|
public class ProgressBar implements Runnable {
private JWindow progressBarFrame; // Frame d'affichage de la barre de creation
protected ActionInterface action; // action en cours d'execution
private JProgressBar progressBar; // barre de progression
private Thread waitingThread; // thread permettant de gerer l'evolution de l'action
public ProgressBar(ActionInterface action)
{
this.action = action;
ProgressBarBox progressBarBox = new ProgressBarBox();
progressBar = progressBarBox.getProgressBar();
progressBarFrame = progressBarBox.getProgressBarFrame();
waitingThread= new Thread(this);
waitingThread.start();
action.launch();
}
public void run()
{
int countProgress = 0;
while (!action.getActionStatus()) {
if (countProgress >= 100) countProgress = 0;
else countProgress=countProgress+1;
progressBar.setValue(countProgress);
try {waitingThread.sleep(20);}
catch(Exception e){}
}
progressBarFrame.dispose();
}
private class ProgressBarBox {
private int scale = 100; // echelle de la barre de progression
private JWindow progressBarFrame; // fenetre de la barre de progression
private JProgressBar progressBar; // la barre de progression
private ProgressBarBox()
{
progressBarFrame = new JWindow();
JPanel panelProgressBar = new JPanel();
JLabel texte = new JLabel("Please wait, process in progress");
progressBar = new JProgressBar(0, scale);
panelProgressBar.add("Center", progressBar);
panelProgressBar.add("Center", texte);
progressBarFrame.getContentPane().add(BorderLayout.CENTER, panelProgressBar);
progressBarFrame.setSize(275,85);
progressBarFrame.setVisible(true);
}
private JWindow getProgressBarFrame() {return progressBarFrame;}
private JProgressBar getProgressBar() {return progressBar;}
}
} |
Si quelqu'un sait ou j'ai faux?8O J'ai l'impression que c'est un problème lors de la création du frame affichant la barre de progression.