Problème d'affichage d'images.
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:
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:
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+