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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.color.*;
public class BarreChargement extends JPanel implements Runnable
{
private JProgressBar progressBar;
//durée en ms du décompte
private int dureeMS ;
//dimensions et nombre d'unités
private final int WIDTH = 100 ;
private final int HEIGHT = 20 ;
private final int NB_UNITS = 100 ;
//couleurs progressives lors du décompte
private final Color FIRST_COLOR = Color.green ;
private final Color SECOND_COLOR = Color.yellow ;
private final Color THIRD_COLOR = Color.orange ;
private final Color FOURTH_COLOR = Color.red ;
//seuils de changement de couleur
private final int FIRST_TRESHOLD = 40 ;
private final int SECOND_TRESHOLD = 65 ;
private final int THIRD_TRESHOLD = 80 ;
//thread éxécutant la progression
private Thread self ;
public BarreChargement (int positionX, int positionY, int dureeMS)
{
//attribution de la durée
this.dureeMS = dureeMS ;
//création de la progressBar
progressBar = new JProgressBar (0, NB_UNITS);
progressBar.setBounds (0,0, WIDTH,HEIGHT);
progressBar.setValue(NB_UNITS);
progressBar.setForeground(FIRST_COLOR);
//création du panel acceuillant la progressBar
setLayout(null);
setBounds (positionX, positionY, WIDTH,HEIGHT);
add (progressBar);
setVisible (true);
//création et lancement du Thread de progression
self = new Thread (this);
self.start ();
}
public void run ()
{
for (int i = 0; i < NB_UNITS; i++){
//on attend une unité de temps
try{
self.sleep ((long)(dureeMS/NB_UNITS));
}
catch (InterruptedException e){}
//on met à jour la progressBar
progressBar.setValue(progressBar.getValue()-1);
//on change la couleur si nécessaire
if(i==FIRST_TRESHOLD)
progressBar.setForeground(SECOND_COLOR);
else if(i==SECOND_TRESHOLD)
progressBar.setForeground(THIRD_COLOR);
else if(i==THIRD_TRESHOLD)
progressBar.setForeground(FOURTH_COLOR);
}
}
public static void main(String[] args){//main pour tester
JFrame frame = new JFrame();
frame.setSize(200,200);
frame.getContentPane().add(new BarreChargement(0,0,5000));
frame.setVisible(true);
}
} |
Partager