kvndevils
Messages postés16Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention28 mai 2008
-
13 nov. 2004 à 00:05
kvndevils
Messages postés16Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention28 mai 2008
-
13 nov. 2004 à 11:17
Bonjour tout le monde ..
Voila je suis actuellement blocker sur un probleme de vector et j'implore ainsi votre aide :
Jai deux fichiers qui sont concernés :
- la classe Figure qui dispose d'une methode appelée
trace(Graphics2D g2).
- la classe DrawPanel extends JPanel qui dispose d'un
private Vector figures en attribut
l'uilisation est la suivante :
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
.....
for (int i=0; i<figures.size(); i++)
{figures.elementAt(i).trace(g2);}
}
Or le pb c kil ne reconnai pa la methode trace(..) sachant ke jai precedament defini une methode d'ajout ki se sert de : figures.add(element); et ke jai egalement construit le vector ds le constructeur : figures = new Vector(); ds le fichier DrawPanel
enfin voila je c plus koi fair je comprend pa ce ki va pas
Je vous remercie par avance bcp bcp
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 13 nov. 2004 à 09:21
GodConan :clown)
il faut savoir qu un vector contient des reference sur des Object et donc ces ref ne sont pas "typer" ... il te faut donc ecrire la ligne avec un 'cast' sur la ref obtenu. cela te donne :
((Figure)figures.elementAt(i)).trace(g2);
evidement remplace Figure par le type exacte des object contenu ds ton vector... ;o)
En general dans ce genre de cas on utilise une interface ce qui ofre bcp plus de liberter ;o) qd au type.
Par exemple une interface du genre
interface Tracable
{
public void trace( Graphics2D g );
}
comme cela ta class pourra afficher toute class implementant Tracable
avec ((Tracable)figures.elementAt(i)).trace(g2);