Bonsoir,
Je suis actuellement entrain de créer des statistiques dont le format de sorti est le PDF. Donc je souhaite passer la création dans un thread.
Cela fonctionne niquel.
Alors la seconde étape est de montrer à l'utilisateur l'état d'avancement de la création de rapport. Alors j'ai créer une class MaProgressBar.
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 55 56 57 58 59 60 61 62 63 64
| package outils;
import javax.swing.JProgressBar;
import javax.swing.JSlider;
import javax.swing.SwingWorker;
public class MaProgressBar extends JProgressBar{
private Move move = null;
private JSlider sb = null ;
public MaProgressBar(){
super(0,100);
sb = new JSlider(JSlider.HORIZONTAL, 0, 100, 60);
sb.setValue(0);
sb.setPaintTicks(true);
sb.setMajorTickSpacing(20);
sb.setMinorTickSpacing(5);
this.setModel(sb.getModel());
this.setValue(0);
}
public void setVisible(boolean b) {
if (b) {
if (move == null) {
move = new Move();
move.start();
}
} else {
if (move != null) {
move.end();
move = null;
}
}
super.setVisible(b);
}
public JProgressBar getProgress(){
return this;
}
private class Move extends Thread {
private boolean end = false;
public void run() {
try {
while (!end) {
sleep(10);
if (getProgress().getValue() < getProgress().getMaximum())
getProgress().setValue(getProgress().getValue() + 1);
else {
getProgress().setValue(0);
}
repaint();
}
} catch (InterruptedException e) {
end();
}
}
public void end() {
this.end = true;
}
}
} |
Ensuite lors du clique sur un bouton je lance la création de rapport et j'initialise
MaProgressBar.setVisible(true);
Puis à la fin de la création du rapport j'initialise
MaProgressBar.setVisible(false);
Voici le thread lancé lors du clique
1 2 3 4 5 6 7 8 9 10 11
| btnLancerStat.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent aevt){
new Thread() {
public void run() {
MaProgressBar.setVisible(true);
fonctionCreationRapport();
MaProgressBar.setVisible(false);
}
}.start();
}); |
Et cela ne m'affiche pas la MaProgressBar 
Si quelqu'un à une idée elle est la bienvenue 
Merci d'avance,
Cordialement,
Partager