Probleme affichage image

cs_scoobi Messages postés 9 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 13 mars 2009 - 22 nov. 2008 à 20:21
cs_scoobi Messages postés 9 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 13 mars 2009 - 24 nov. 2008 à 18:30
bonjour,
alors déjà je ne savais pas si c'est le bon endroit pour ce post alors désolé si ça ne l'est pas.
Petite présentation de mon programme:
Mon but est de faire un jeu de type mémo où le but est de trouver les paires d'images. J'ai donc une classe Surface qui hérite de Canvas qui sert de support à tous les éléments qui vont être affichés (boutons, rectangles, textes, images...).
Et j'ai ma classe Cards dont le but sera d'affecter divers variables notamment le lieu où se trouve l'image (car l'utilisateur pourra choisir quelles images il voudra utiliser et elles seront sauvegardées et lues via FileWriter et File Reader); cette classe contient une méthode paint dont le but est évidament d'afficher l'image sur la surface en question. Après un probléme d'ImageObserver résolu, mon programme ne veut pas se compiler alors que Netbeans ne me détecte pas d'erreurs.
Je préfére mettre ici mes classes Surface et Cards afin que vous puissiez mieux voir:
public class Surface extends Canvas{
   
    public Surface(int width, int height) {
        vector= new Vector();
        vector2= new Vector();
        setSize(width, height);
    }
   
    public void paint(Graphics graphics){
        for(int i=0; i<vector.size(); i++){
            ((Shape)vector.get(i)).paint(graphics);
        }
        ((Cards)vector2.get(0)).paint(graphics);
    }
   
    public void add(Shape data){
        vector.add(data);
        repaint();
    }
   
    public void add(Image img){
        vector2.add(img);
        repaint();
    }
    public void remove(Shape shape){
        vector.remove(shape);
    }
   
   
    private java.util.Vector vector = null;
    private java.util.Vector vector2 = null;
}

public class Cards {
    public Cards(Surface surface){
       java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
       Image image= toolkit.getImage("PJ-echelle.gif");
       surface.add(image);
    }
   
    public void paint(Graphics graphics){
        graphics.drawImage(image, 200, 400,null);
    }
    private Image image=null;
}

L'erreur est alors la suivante:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to graphic.Cards
qui si je comprends bien dit qu'il ne peut pas caster en Cards un ToolkitImage.
NB: la classe Cards n'est pas finie j'essayer juste d'afficher une image donnée pour voir si ça marche...

2 réponses

cs_scoobi Messages postés 9 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 13 mars 2009
23 nov. 2008 à 16:00
bonjour,

j'ai a moitié corrigé à savoir que je n'ai aucune erreur mais mon image ne s'affiche pas...

pour cela j'ai modifier la classe Cards pour la mettre comme suit:

public class Cards {

public Cards(String str){

java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();//ligne obligatoire pour charger
Image img= toolkit.getImage(str) ;//on charge l'image depuis str
this.image =img;

}


public void paint(Graphics graphics){

graphics.drawImage(image, 200, 400,null);

}

public Image image=null;

}


et j'ai changer la méthode de Surface add comme suit:
public void add(Cards cards){
vector2.add(cards);

repaint();

}

Donc il ne reste qu'a afficher cette image....
0
cs_scoobi Messages postés 9 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 13 mars 2009
24 nov. 2008 à 18:30
personne n'aurait une petite idée?
0
Rejoignez-nous