chocobarbe
Messages postés32Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 5 février 2010
-
10 sept. 2007 à 10:34
kenshiro -
26 mars 2019 à 12:31
Bonjour à tous!
Voici mon probleme :
Je fais de la programmation en java, du graphique surtout.
Ma fenetre principale est crée dans un fichier genre fenetre1.class, grace a elle, on peut acceder à une nouvelle fenetre qui est crée par un autre fichier( fenetre2.class)
Dans fenetre2.class on effectué des saisies de valeurs et des calculs. jai donc un variable resultat.
Il faut que dans ma fenetre1 j'affiche ce resultat ! Mais ou et comment déclarer cette variable !
En clair il me faut une variable globale à TOUTE les classes, et ca , j'ai beau chercher, j'ai pas trouvé ...
La seule solution qui me semblerait possible est de crée les 2 fenetres dans le meme fichier, mais ca rendrait le code lourd.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 10 sept. 2007 à 13:55
Salut,
Bien entendu le "TaVariable" doit être modifié par le nom de ta variable, et pour le "taVariable", y'a bien une faute de frappe, faut lire : "this.TaVariable"
Par contre, pour accèder à la variable en question à partir de ta fenêtre 1, il ne suffit pas de taper le nom de la variable (comme ca serait le cas pour une variable globale), il faut passer par une instance de ta 2ème classe :
ici en l'occurence, tu dois avoir une déclaration du type :
Fenetre2 fenetre = new Fenetre2();
Et bien il te faut utiliser l'objet fenetre pour accèder à ta variable :
fenetre.setTaVariable("toto");
System.out.println(fenetre.getTaVariable());
______________________________________
DarK Sidious
Salut,
Merci pour toutes tes réponses elles m'ont beaucoup aidé
Mais si le getter renvoie la variable vide (celle déclarée au début) comment faire pour récupérer la variable modifié dans le onCreate ?
chocobarbe
Messages postés32Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 5 février 20101 10 sept. 2007 à 13:01
Dit comme ca, ca parait assez simple.
Dit moi voir si je procede bien :
Dans ma fenetre2.class, j'ajoute ton code
public class fenetre2{
private String TaVariable;
Tavariable = truc + machin;
public void setTaVariable(String TaVariable) {
this.taVariable = TaVariable;
// ya pas une faute la ? taVariable=>TaVariable
}
public String getTaVariable() {
return TaVariable;
}
}
Mais pour ma fenetre principale ( fenetre1.class ), lorsque je vais ecrire à un endroit "Tavariable", va t'elle la reconnaitre, faut il la déclarer? si oui comment car jai peur que chaque "Tavariable" ne devienne utilisable que dans sa class respectives.
(Oui je sais ya beaucoup de question et je vous remercie de suivre l'affaire)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 10 sept. 2007 à 10:40
Salut,
Cela n'est pas possible directement, et encore heureux : c'est l'une des causes des bugs les plus chiant à debugger !
bien que ce soit possible de rendre une variable public à tout le projet à partir d'un nom de classe, je te déconseille vivement cette approche, cela va à l'encontre du modèle objet !
La solution consiste à soit :
1/ Créer une constantes statiques dans une classe si la variable n'est pas modifiée
2/ Créer des accesseurs à ta variables dans la classes qui la stocke (si chaque instance de la classe doit contenir une valeur différente).
3/ Créer une classe singleton avec ta variable et ses accesseurs (la solution la moins crade pour faire une variable globale à mon avis)
4/ Créer une variable static avec des accesseurs static dessus (simulation d'une variable globale, mais très crade !)
______________________________________
DarK Sidious
Vous n’avez pas trouvé la réponse que vous recherchez ?
chocobarbe
Messages postés32Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 5 février 20101 10 sept. 2007 à 11:30
Et concretement j'ecris ca comment ?
Static float resultat ?? => je le place ou dans ma fenetre1.class et/ou fenetre2.class ?
La solution consiste à soit :
1/ Créer une constantes statiques dans une classe si la variable n'est pas modifiée ==> ma variable va être modifié de temps en temps
2/ Créer des accesseurs à ta variables dans la classes qui la stocke (si chaque instance de la classe doit contenir une valeur différente). ==> niveau vocabulaire java je suis pas tres fort ( " instance" ), je ne comprend donc pas cette solution
3/ Créer une classe singleton avec ta variable et ses accesseurs (la solution la moins crade pour faire une variable globale à mon avis)
=> comment faire? ( selon toi c'est le plus simple )
4/ Créer une variable static avec des accesseurs static dessus (simulation d'une variable globale, mais très crade !)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 10 sept. 2007 à 15:26
Salut,
En tout cas, c'est l'approche classique : une variable privée dont on rend accessible à l'extérieur par des getters/setters, cela permet de plus facilement débugguer une application.
______________________________________
DarK Sidious