ArrayList et Objet

ArrayList et Objet - Java - Programmation

Marsh Posté le 15-09-2004 à 16:09:41    

j'ai une question a propos des ArrayList qui doivent servir ici à stocker des objets instancie de la classe Rectan
 
apparemment pour acceder a une valeur (ici une valeur entiere de l'objet ) ca pose probleme
 
comme je fait pour acceder a une valeur (ps j'ai declarer le type en public) de l'objet stocke dans mon ArrayList?  
 
code:
 

ArrayList ListeSyno = new ArrayList();
 
public MainTest(){
 
super("creation d'elements" );
 
BarrePosition = new JLabel();
getContentPane().add(BarrePosition, BorderLayout.SOUTH);
 
//instanciation des objets
Rectan rec1 = new Rectan("rec1", "titi", 5, 10, 100, 50);
Rectan rec2 = new Rectan("rec2", "toto", 115, 10, 100, 50);
 
//stockage des objets dans la collection
ListeSyno.add(rec1);  
ListeSyno.add(rec2);
 
setSize(500, 500);
show();
}
 
 
public void paint(Graphics g){  
 
 
for(int i=0 ; i < ListeSyno.size() ; i++){
g.drawRect( ListeSyno.get(i).Rectx, ListeSyno.get(i).Recty,
ListeSyno.get(i).RectLongx, ListeSyno.get(i).RectLongy );
 
g.drawString( ListeSyno.get(i).nom, ListeSyno.get(i).Rectx + 50, ListeSyno.get(i).Recty + 40 );
}
 
}  

dans la methode paint je parcours toute la liste pour afficher mes objets mais j'ai un probleme au niveau de la compilation:
 
MainTest.java:44: cannot resolve symbol
symbol : variable Rectx
location: class java.lang.Object
g.drawRect( ListeSyno.get(i).Rectx
 
etc...-> c'est comme ca les n fois ou dans mon code j'appelle l'objet via ListeSyno.get(i).Rectx, ListeSyno.get(i).Recty, etc...


Message édité par kungouf le 15-09-2004 à 16:24:58
Reply

Marsh Posté le 15-09-2004 à 16:09:41   

Reply

Marsh Posté le 15-09-2004 à 16:10:17    

je viens d'essayer de faire un cast sans succes:
 
 
je fait le cast plus haut et que je stocke le resultat dans une variable (je sais je pourrais faire le cast directement dans ma methode drawRect..):
 
code:

ArrayList listeSyno = new ArrayList();
 
 
public MainTest(){
 
super("creation d'elements" );
 
BarrePosition = new JLabel();
getContentPane().add(BarrePosition, BorderLayout.SOUTH);
 
Rectan rec1 = new Rectan("rec1", "titi", 5, 10, 100, 50);
Rectan rec2 = new Rectan("rec2", "toto", 115, 10, 100, 50);
 
listeSyno.add(rec1);
listeSyno.add(rec2);
 
setSize(500, 500);
show();
}
 
public void paint(Graphics g){  
 
int valeur;
 
valeur = (Rectan) (listeSyno.get(i)).Rectx;
 
for(int i=0 ; i < listeSyno.size() ; i++){
g.drawRect(valeur, 20, 100, 100);
}

erreurs:
 
 
MainTest.java:40: cannot resolve symbol
symbol : variable i
location: class MainTest
valeur = (Rectan) (listeSyno.get(i)).Rectx;
^
MainTest.java:40: cannot resolve symbol
symbol : variable Rectx
location: class java.lang.Object
valeur = (Rectan) (listeSyno.get(i)).Rectx;
^
MainTest.java:40: incompatible types
found : Rectan
required: int
valeur = (Rectan) (listeSyno.get(i)).Rectx;
^
3 errors


Message édité par kungouf le 15-09-2004 à 16:25:30
Reply

Marsh Posté le 15-09-2004 à 16:12:38    

1 - mets des balises [cpp] autour de ton code,
2 - lis les docs des classes que tu utilises : ArrayList.get(int i) retourne un Object
Et un Object n'a pas de champ Rectx... Tu dois caster les objets que tu sors de ton arraylist dans le type d'origine.
3 - pas de majuscules aux noms de variable, de champs et de méthodes en java!! :cry:


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 15-09-2004 à 17:17:21    

oui je sais j'ai change ca
pardonne moi, je suis autodidacte et donc je suis pas trop a niveau sur les conventions d'ecriture, mais bon j'apprend au fur et a mesure et c'est bien note ;)
 
c'est bon l'erreur venait des parentheses au niveau de mes cast
 
 
((Rectan) listeSyno.get(i)).Rectx;
 
 
voila sinon tout fonctionne correctement pour la collection

Reply

Marsh Posté le 15-09-2004 à 17:23:38    

gfive a écrit :

1 - mets des balises [cpp] autour de ton code,

pas d'accord, la balise CPP est pourrie, si tu veux copier du code, tu récupères des # à chaque debut de ligne, c'est dégeux

Reply

Marsh Posté le 15-09-2004 à 17:26:14    

Taz a écrit :

pas d'accord, la balise CPP est pourrie, si tu veux copier du code, tu récupères des # à chaque debut de ligne, c'est dégeux


 
au pire si tu veux faire ca t'edit, mais la, sans cpp, son truc est illisible

Reply

Marsh Posté le 15-09-2004 à 17:28:58    

chrisbk a écrit :

au pire si tu veux faire ca t'edit, mais la, sans cpp, son truc est illisible

oui mais bon, ça a pas d'intérêt de ce casser le cul pour ça. alors entre la coloration défaillante et inutile pour certains langages, c'est vite vu

Reply

Marsh Posté le 15-09-2004 à 19:09:48    

Taz a écrit :

oui mais bon, ça a pas d'intérêt de ce casser le cul pour ça. alors entre la coloration défaillante et inutile pour certains langages, c'est vite vu


Ouais et puis, une balise cpp pour du code java, j'ai toujours trouvé ça limite  :sol:  
 
Mais faut au moins un fixed-font pour afficher du code correctement, sinon bonjour les indents foireux.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed