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