Rechercher : dans
Par :

JAVA Variable Globale garde pas valeur.......

Dernière réponse le 20 jan 2009 à 12:08:10 JavaDebute, le 16 jan 2009 à 08:13:36 
 Signaler ce message aux modérateurs

Bonjour,

voila comme je l ai dis dans le titre, je n arrive pas a garder une valeur rentrer en mémoire dans une variable dans un autre fonction!
je m explique :

J ai créé une variable en "private static String maVar" puis dans une fonction j ai cette variable, j y fais rentrer une valeur, la elle la mémorise bien, je sors de cette fonction et quand je l appele dans une autre fonction elle est a "Null"!

je vous envoi mon code :




----------------------------------------------------------------------------------------------------------


package test6;

import javax.swing.*;
import java.awt.event.*;

import java.io.*;

public class Main extends JPanel implements ActionListener {

/**
*
*/
private static final long serialVersionUID = 1L;
private static JFrame frame = new JFrame("Notepad by Gaga");
private JPanel panel = new JPanel();
private JTextField texte = new JTextField(10);
private JButton ok = new JButton("Save");
private static String testText; // ---> cette variable !!!!

public Main(){
add(panel);
panel.add(texte);
panel.add(ok);
ok.addActionListener(this);
}

public void actionPerformed(ActionEvent e){

if(e.getSource()==ok){

testText = texte.getText();
//System.out.println(testText);
System.out.println(testText + " 1 ");
}
}

public static void main(String[] args) throws IOException {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println(testText + " 2 ");
frame.add(new Main());
System.out.println(testText + " 3 ");
frame.pack();

/* BufferedWriter fw = new BufferedWriter(new FileWriter(
"C:\\Users\\Gautier\\Desktop\\ecrire.txt", true));

fw.write(testText + " aaa ");
fw.write("\r\n");
// ...

fw.close();*/

/*PrintWriter fw = new PrintWriter(new FileWriter("C:\\Users\\Gautier\\Desktop\\ecrire.txt", true));
fw.print(testText+":"+ "aaa");
fw.close() ;*/

System.out.println(testText + " 4 ");
File x = new File("C:\\Users\\Gautier\\Desktop\\ecrire.txt");
FileWriter fw = new FileWriter(x);
fw.write(testText + " eeeee ");
System.out.println(testText + " 5 ");
fw.close();

}

}



---------------------------------------------------------------------------------------------------------------------

Je vous remercie beaucoup pour votre aide ;)

a bientôt

Configuration: Windows Vista
Firefox 3.0.5

Meilleures réponses pour « JAVA Variable Globale garde pas valeur....... » dans :
Java: les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Java sont typées, c'est-à-dire que les données contenues dans...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

freto, le 16 jan 2009 à 09:17:53

Ton code est assez bizarre...mais bon.
Deja, renomme ta méthode Main autrement, sinon sa embrouille.
Je sais que techniquement, java devrait différencier Main de main, mais au moins tu seras sur.
Essaie aussi pour résoudre ton problème, d'implémenter un getter et un setter pour ta variable.
sa ressemblerais a sa:

public void setMaVariable(int v){
  this.maVariable=v;
}

public int getMaVariable(){
   return this.maVariable;
}


Par la suite quand tu veut utiliser ta variable, utilise les via le getter et le setter.
Ainsi, le code sera plus clair.
Enfin, je vois que tu utilise l'interfaçage graphique. L'attribut static indique que ta variable n'existe qu'en un seul exemplaire pour toutes les classes. Donc je pense que, vu que l'interfaçage utilise des threads, soit le thread n'a pas instancié la variable a temps, soit elle est instancié dans une classe, mais n'est visible que dans celle ci. C'est un peu compliqué certes, mais j'arriverai pas à décrire sa autrement. What's tiny, and yellow and very very dangerous?????
A canary with the super-user password.
Mouhahahaha

Répondre à freto

2

JavaDebute, le 16 jan 2009 à 10:08:34

Désolé mais j ai pas tout compris, j ai testé un peu ce que tu m as dit et fais des recherches sur le net mais il y a des truc qui ne marchent pas....

Je vois pas ce que je dois remplacer exactement dans mon code :s

Répondre à JavaDebute

3

freto, le 16 jan 2009 à 10:31:50

C'est plutot ce que tu doit ajouter.
Les fonctions get et set, tu peut les mettre ou tu veut.
Il te faudrait un débugger comme dans netbeans ou eclipse pour vérifier que tu instancie bien les valeurs au bon moment.
Mais là hélas je ne peut pas t'aider plus que sa.
Essaie d'enlever aussi l'attribut static de ta variable, et en dernier recours de mettre public au lieu de private.
Sinon, encore une derniere piste, essaie de placer ton code dans une classe, et d'instancier et utiliser les méthodes de la classe dans une autre, qui sera ton main.
What's tiny, and yellow and very very dangerous?????
A canary with the super-user password.
Mouhahahaha

Répondre à freto

4

Marco la baraque, le 16 jan 2009 à 10:58:26

Bonjour,
Sinon essaie avec :

...
testText = new String(texte.getText());
...

C'est en quelque sorte un contructeur par recopie. Je ne comprends pas non plus pourquoi la valeur affectée n'est pas gardée tout le temps.

Cordialement, rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque

5

JavaDebute, le 20 jan 2009 à 09:17:01

C est bon j ai trouvé la solution

en fait ca venait du main, le main() en fait s éxécuté au début mais aprés il ne se reéxécuté plus, donc j ai mi le code du main() dans "public void actionPerformed(ActionEvent e)" sans oublié un try/catch pour les exceptions et voila!

Répondre à JavaDebute

6

JavaDebute, le 20 jan 2009 à 09:20:05

Par contre je sais pas comment on met RésoLU ?
merci

Répondre à JavaDebute

7

 Marco la baraque, le 20 jan 2009 à 12:08:10

C'est tout en haut du sujet. Tu as 2 checkboxes : "non résolu" et "résolu" avec un bouton "ok" sur leur droite.
Je le passe en résolu, tu sauras où chercher la prochaine fois !

A la prochaine. rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque
Collection CommentÇaMarche.net