[Java] Error: non-static variable

Fermé
papillon_bleu Messages postés 3 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 juin 2005 - 26 mai 2005 à 20:12
papillon_bleu Messages postés 3 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 juin 2005 - 7 juin 2005 à 19:19
Coucou tt le monde!!

Merci déjà de prendre un peu de votre temps pour aider les autres!!

Moi aussi j'ai une petite question à propos d'une erreur dans mon programme.
voilà l'erreur:
C:\Documents and Settings\Administrateur\Bureau\Agent.java:206: non-static variable activeCible cannot be referenced from a static context
Agent.activeCible =true;
^
Donc en fait j'ai déclaré un boolean activeCible danc ma classe agent.
public class Agent{
	
	public Vecteur position;
	public Vecteur vitesse;
	public Vecteur force;
	public Vecteur acceleration;
	public Vecteur orientation;
	public Color myColor;
	public double masse;
	public double maxForce= 1.7;
	public double maxVitesse= 2.5;
	public Monde lemonde;
	public boolean activeCible = false;

avec ttes les méthodes suivent.
Je veux rappeler ma variable dans ma classe interface au niveau de l'action d'un bouton et pour l'appeler je fais Agent.activeCible:

	public void actionPerformed(ActionEvent Ev) {	
  		
  	    if(Ev.getSource()==this.activerLaCible) { 
	 		activerLaCible.setEnabled(true);
  			Agent.activeCible = true;
  			arreter.setEnabled(false);	
  	}

mais ça ne marche pas et je ne vois pas du tout pourquoi c'est surement pas très compliquer... Enfin Merci pour toutes vos réponses d'avance et surtout BONNE SOIREE!!
Laura
A voir également:

1 réponse

Bonjours papillon_bleu, je pense avoir trouvé ton erreur.

Si ta classe Agent sert d'objet (pour la création de plusieurs Agents différents avec des attributs différents), tu dois définir quel Agent doit modifier sa variable activeCible. Pour créer un Agent, tu utilises la commande suivante :

Agent monAgent = new Agent(attributs_du_constructeur);
En appellant activeCible de cette manière : (Agent.activeCible), une erreur se produit car ta variable activeCible n'a pas été déclaré en static (public static boolean activeCible = false;). Déclarer une variable en static la fait unique, donc elle portera les memes valeurs peut importe tes objets Agent. J'imagine que tu veux le contraire donc la solution à ton probleme serait de remplacer la ligne erroné par :

monAgent(désignant le nom de ton agent).activeCible = true;

Je te propose aussi de créer une méthode setActiveCible().
Finalement si tu ne connais pas nécéssairement le nom de ton Agent, utilise un tableau d'objets Agent !

J'espere avoir pu t'aider !
4
papillon_bleu Messages postés 3 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 juin 2005
7 juin 2005 à 19:19
Parait-il qu'il n'est js trop tard... donc je te dis MERCI ( Avec un énorme retard..dont je m'excuse) car oui tu m'as aidé!!
Bon courage pour la suite!!

++
Laura
0