Variable classe anonyme

Résolu/Fermé
Alice - 7 avril 2013 à 15:45
 Alice - 7 avril 2013 à 16:19
Bonjour,

Je débute en java et pour m'entrainer, je développe une petite application.
J'ai une question, peut-on récupérer la valeur d'une variable d'une classe anonyme, afin de s'en resservir dans une autre classe ?

Voici une partie de mon code:

input.addActionListener(new ActionListener(){ // le input correspond a un Jtextfield
public void actionPerformed(ActionEvent evt){
String inputstring = input.getText(); // recupere le string du textfield
output.append(""+ inputstring + "\n"); // affiche le string dans un textarea
input.setText(""); // vide le textfield

La valeur que je souhaite récupérer est "inputstring".

Cordialement

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
7 avril 2013 à 16:09
D'une part, non, on ne peut pas récupérer une variable d'une classe anonyme puisque vu qu'elle est anonyme on n'a aucun moyen de l'identifier ailleurs dans le code. D'autre part inputstring n'est pas une variable de classe, c'est une variable locale à la méthode actionPerformed, et que ce soit dans une classe anonyme ou pas, on ne peut jamais récupérer des variables locales.

Si tu veux récupérer la valeur de inputstring, il faut déclarer un objet en dehors de ta classe anonyme pour pouvoir le stocker quand tu accès à ta méthode.

input.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent evt)
    { 
        String inputstring = input.getText();
        sauvegarde.setText(inputString);
        output.append(inputstring+"\n");
        input.setText("");
    }
}

Remarque : j'ai utilisé "sauvegarde.setText" mais il faudrait créer un objet sauvegarde avec une classe capable de stocker un String et qui aurait une méthode setText. Exemple :

public class Sauvegarde
{
    private String str;
    
    public void setText(String txt)
    {
        str = txt;
    }
    
    public String getText()
    {
        return str;
    }
}

final Sauvegarde sauvegarde = new Sauvegarde();
3
Merci beaucoup !
0