Bonsoir,
Je fais un petit diaporama d'images en swing, et je n'arrive pas à comprendre pourquoi lorsque je lance ma JFrame, elle est vide et rien ne se passe alors que j'aimerais voir mes deux images défiler.
Voici le code de ma MainClass :
Et voici le code de ma classe Diaporama :
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 import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Dimension; public class MonMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JFrame f = new JFrame(); f.setTitle("Test Disporama"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLocation(225,5); f.setSize(new Dimension(300,300)); Diaporama Diap = new Diaporama(); JPanel p = new JPanel(); p.add(Diap); f.add(p); f.setVisible(true); } }
Ce n'est surement pas difficile de trouver la solution mais je bloque là.
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 import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.awt.Graphics; import javax.swing.JPanel; public class Diaporama extends JPanel implements Runnable { BufferedImage[] images = new BufferedImage[2]; int frame = 0; Thread thread; public void init() { try{ images[0] = ImageIO.read(new File("./Plateau 1.gif")); images[1] = ImageIO.read(new File("./Plateau 2.gif")); }catch (Exception e){ System.err.println("Erreur de chargement de l'image plateau"); } } public void start() { (thread = new Thread(this)).start(); } public void stop() { thread = null; } public void paintComponent(Graphics g) { g.drawImage(images[frame], 0, 0, this); } public void run() { int delay = 1000; // 1 seconde try { while (thread == Thread.currentThread()) { frame = (frame+1)%images.length; repaint(); Thread.sleep(delay); } } catch (Exception e) { System.out.println("Erreur");} } }
Je vous remercie d'avance pour vos réponses.
A+
Partager