Problème pour afficher des image en Java

PgN972 Messages postés 2 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 26 mars 2009 - 26 mars 2009 à 14:12
PgN972 Messages postés 2 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 26 mars 2009 - 26 mars 2009 à 19:11
Bonjour je suis nouveau sur le forum, et j'ai un petit soucis dans mon code. En quels que mots je vais vous expliquez.
Alors je dois réaliser un programme en Java qui doit aficher aléatoirement des images.gif. J'ai trouvé une methode mais le problème est que sa affiche les image une fois sur 2  et cela fait 2 jours que je suis deçu mais je vois pas ou sa coince.
Voici le code j'espere qu'il est comprehensible.

import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.util.*;
import java.lang.*;
//import java.io.*;

public class TestJeu13 extends JFrame
{
    private ArrayListlisteImg;
    private ArrayList<String>tabUrl;
    //private ArrayList<File>tabUrlSon;
    private Image img, imgTest;
    private String url, urlTmp;
    private int tailleImg, tailleUrl, aleatoire;
   
   
    public TestJeu13()
    {
       
        listeImg    = new ArrayList();
        tabUrl    = new ArrayList<String>();
        //tabUrlSon= new ArrayList<File>();
       
        url = "";
        urlTmp = "";
       
        aleatoire = (int)(Math.random()*20);
               
        setTitle("Jeu forme et son");
            setSize(800,700);
               setLocation(50,100);
        setVisible(true);

    }
    public void listImg()
    {
        url = "bibliotheque/formeAnimaux/formeImage/carre.gif";
        img    = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
       
        url = "bibliotheque/formeAnimaux/formeImage/cercle.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/chapeau.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/disque.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/losange.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/nuage.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/rectangle.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);

        url = "bibliotheque/formeAnimaux/formeImage/triangle.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/formeImage/sapin.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/cochon.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/cheval.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/chat.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/canard.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/ane.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/aigle.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/elephant.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/mouton.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/poule.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/singe.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
       
        url = "bibliotheque/formeAnimaux/animauxImage/vache.gif";
        img = Toolkit.getDefaultToolkit().getImage(url);
        listeImg.add(img);
        tabUrl.add(url);
    }
    public void paint(Graphics g)
    {
        int xMin = 100;
        int xMax =500;
        int x, y;
   
       
        urlTmp = tabUrl.get(aleatoire);
       
        imgTest = Toolkit.getDefaultToolkit().getImage(urlTmp);
       
        MediaTracker track = new MediaTracker(this);

        // 0 est l'identifiant de l'image a charger
        track.addImage(imgTest, 0);

        try {
            track.waitForID(0);
        } catch (InterruptedException e) {}
       
        x = (int)(Math.random()*(xMax-xMin+1))+xMin;
        y = (int)(Math.random()*(xMax-xMin+1))+xMin;
        System.out.println(" w : "+ x + " h : " + y);
        g.drawImage(imgTest,x,y, 300, 250, null);
    }
    public void test()
    {
        System.out.println("le nombre tire "+aleatoire);
        tailleImg = listeImg.size();
        System.out.println("la taille arraylist image est : "+tailleImg);
           
        tailleUrl = tabUrl.size();
        System.out.println("la taille arraylist url est : "+tailleUrl);
       
        System.out.println("l image est : "+tabUrl.get(aleatoire));
       
    }
    public static void main (String [] args)
    {
        TestJeu13 test = new TestJeu13();
        test.listImg();
        test.test();

    }
}

Merci pour vos future réponse

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 mars 2009 à 14:49
Salut,

en swing :
1 - on utilise pas paint mais paintComponent
2 - on ne dessine surtout pas dans une fenêtre mais dans un composant de la fenêtre (ici tu dessines dans la fenêtre)
3 - en swing et en awt on évite de faire un wait (cf le waitForID) dans le paint/paintComponent

pour ce qui est du chargement de tes images n'utilise pas Toolkit qui charge les images quand il a le temps (au passage ne remonte pas d'exception si l'images est merdique) et te force à utiliser un MediaTracker, utilise plutot ImageIO.read qui est bien mieux.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
PgN972 Messages postés 2 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 19:11
Salut,
Merci beaucoup j'essaie cela tout de suite.
0
Rejoignez-nous