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
| public class Fenetre extends JFrame {
public Fenetre() {
super();
init();
}
private Image readImage(String imagePath) {
try {
return ImageIO.read(new File(imagePath));
// return ImageIO.read(getClass().getResource(imagePath)); // tu pourrais faire comme ça, en plus, si tu exportes ton appli en jar, tu n'auras pas de problèmes d'emplacement de fichiers et tu pourras les intégrer dans le jar
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private void init () {
int nombreAleatoire = 1 + (int)(Math.random() * ((12)));
int nombreAleatoire2 = 1 + (int)(Math.random() * ((12)));
final JPanel panneau1=new Panneau(readImage("images/images/acides_carboxyliques/"+nombreAleatoire+".png"));
final JPanel panneau2=new Panneau(readImage("images/images/alcanes/"+nombreAleatoire2+".png"));
ActionListener listener = new ActionListener (){ // <- accolade de début de classe anonyme
private int pan = 0;
@Override
public void actionPerformed(ActionEvent evt) {
switch(pan++% 2){
case (0):Fenetre.this.setContentPane(panneau1); Fenetre.this.validate(); break;
case (1):Fenetre.this.setContentPane(panneau2); Fenetre.this.validate(); break;
}
}
};
Timer timer = new Timer (2000, listener);
timer.setInitialDelay(0);
// on a fait un max de choses avant d'ouvrir/afficher la fenêtre
this.setTitle("Série d'images");
this.setSize(500, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// enfin ça aussi, on peut considérer que ça fait partie des max de choses à faire avant d'ouvrir/afficher la fenêtre
this.setContentPane(panneau1); // afficher par défaut l'image correspondant à 1%2==0 (donc la fenêtre n'apparaitra jamais "grise")
// si pas setInitialDelay(0) this.setContentPane(panneau2); // afficher par défaut l'image correspondant ) à 1%2==1
this.setVisible(true);
timer.start ();
} |