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 :
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);	
	}
}
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
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");}
    }
}
Ce n'est surement pas difficile de trouver la solution mais je bloque là.
Je vous remercie d'avance pour vos réponses.
A+