Appeler methode d'une class sur un objet d'une autre class

Résolu
artemis01 Messages postés 5 Date d'inscription samedi 26 mars 2011 Statut Membre Dernière intervention 26 juin 2011 - 5 juin 2011 à 23:06
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 6 juin 2011 à 22:17
Bonjour, je m'en sort pas avec cette methode qui me produit une erreur :

MonTest4.java:87: cannot find symbol
symbol : method sauver(java.lang.String)
location: class Bitmap

dans mon main j'ai :
Bitmap[]mesImages=new Bitmap[2];

un tableau d'images de type Bitmap, j'ai une liste d'images qui s'affichent, je saisi le nom pour la sauvegarder

System.out.print("Numero de l'image à sauver:");
int imgsauver=sc.nextInt();
System.out.print("Nom du fichier:");
String s=sc.nextLine();
mesImages[imgsauver].sauver(s);


voici la class Bitmap:
public class Bitmap {
    Scanner sc = new Scanner(System.in);
    int[][][]data;
    String nom;
    ImageExterne ie;
    Bitmap(String n) throws IOException, FileNotFoundException { // constructeur pour les images lues
        this.ie=new ImageExterneLue(n);
        this.nom=n;
        this.data=((ImageExterneLue)ie).getTableau();
    }
    Bitmap(int largeur, int hauteur){		// constructeur pour les images créés
        this.data=new int[largeur][hauteur][3];
        for(int x=0;x<this.data.length;x++){  
                    for(int y=0;y<this.data[0].length;y++){
                            this.data[x][y][0]=0;
                            this.data[x][y][1]=250;
                            this.data[x][y][2]=0;
                    }
        }
        this.nom=null;
        this.ie=new ImageExterneCree(this.data);
    }


et enfin la class ou est ecrite la methode sauver:


import javax.imageio.*; 
import java.awt.image.*;
import java.io.*;
public class ImageExterneCree extends ImageExterne{
    private int rgbColor(int[] t){
return (255<<24)+(t[0]<<16)+(t[1]<<8)+t[2];
    }
    public ImageExterneCree(int[][][] tab){
int wid, hei;
wid = tab.length;
hei = tab[0].length;
int[] rgb= new int[wid*hei];
for (int i=0; i<rgb.length; i++){
    rgb[i]=rgbColor(tab[i%wid][i/wid]);
}
img = new BufferedImage(wid,hei,BufferedImage.TYPE_INT_RGB);
img.setRGB(0,0,wid,hei,rgb,0,wid);
this.showImage();
    }	
    public void changeImage(int[][][] tab){
int wid, hei;
wid = tab.length;
hei = tab[0].length;
int[] rgb= new int[wid*hei];
for (int i=0; i<rgb.length; i++){
    rgb[i]=rgbColor(tab[i%wid][i/wid]);
}
img = new BufferedImage(wid,hei,BufferedImage.TYPE_INT_RGB);
img.setRGB(0,0,wid,hei,rgb,0,wid);
mp.change(img);
    }
    public void sauver(String s) throws IOException{
ImageIO.write(img,"jpeg",new File(s));
    }
}



Merci beaucoup pour votre aide

3 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
6 juin 2011 à 02:28
salut,

'mesImages[imgsauver].sauver(s);'

si j ai bien compris mesImages est un tableau de Bitmap... ;o) or la class Bitmap ne POSSEDE pas de méthode sauver...

de plus tu ne semble pas faire d instance de ImageExterneCree ... et cette class n ayant pas de methode static (pas forcement la meilleur soluce) ;o) ... ben c est vraiment cuit ;o)

il semble que quelque chose t ai un peu échapé ;o) dans la POO ;o) et dans la differenc entre une instance et une réference ;o) ...

donc

si tu veux garder ton ecriture du doit implementer "sauver" dans Bitmap...
mais tu peux aussi faire une méthode 'sauver' (static pour faire simple) qui prend un bitmap en parametre :

ImageExterneCree.sauver( mesImages[imgsauver], s );

par exemple .. ;o)





GodConan ;o)
3
artemis01 Messages postés 5 Date d'inscription samedi 26 mars 2011 Statut Membre Dernière intervention 26 juin 2011
6 juin 2011 à 21:47
Bonjour,
ça va beaucoup mieux après tes explications!
je débute et ça se voit!
ce n'est pas évident encore de jongler avec les class les methodes, objets, variables, je m'y perds

Merci!
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
6 juin 2011 à 22:17
tout le monde y passe... ;o)

GodConan ;o)
0
Rejoignez-nous