Appeler methode d'une class sur un objet d'une autre class [Résolu]

Messages postés
5
Date d'inscription
samedi 26 mars 2011
Statut
Membre
Dernière intervention
26 juin 2011
- - Dernière réponse : cs_GodConan
Messages postés
2116
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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 132 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_GodConan
Messages postés
5
Date d'inscription
samedi 26 mars 2011
Statut
Membre
Dernière intervention
26 juin 2011
0
Merci
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!
Commenter la réponse de artemis01
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
tout le monde y passe... ;o)

GodConan ;o)
Commenter la réponse de cs_GodConan