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.

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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? J'ai l'impression que c'est un problème lors de la création du frame affichant la barre de progression.