ArrayList et Objet - Java - Programmation
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
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!! 
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
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
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
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
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   
  
 
Mais faut au moins un fixed-font pour afficher du code correctement, sinon bonjour les indents foireux.
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