Classe interne modification d'un champ de OuterClass

begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 - 25 nov. 2011 à 01:13
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 28 nov. 2011 à 08:12
Bonjour,

j'ai désigné une classe interne comme suit:


 public class OuterClass{
       int attribute=0;
   
       class InnerClass {
   
          public void method1(){
            attribute++;
         }
  
         public void method2(){
            System.out.println(attribute);
        }
    }

Lorsque j'appelle correctement method2() je vois afficher un 0 et non pas un 1 comme prévu: pourriez-vous me dire où réside le problème, svp ? Merci

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
25 nov. 2011 à 08:28
Bonjour,

Ce code affiche 1, je ne vois pas vraiment comment tu appeles tes méthodes pour afficher 0...

public class OuterClass{
       int attribute=0;
   
       class InnerClass {
   
          public void method1(){
            attribute++;
         }
  
         public void method2(){
            System.out.println(attribute);
        }
    }
       
    private void test(){
    	InnerClass i = new InnerClass();
    	i.method1();
    	i.method2();
    }
    public static void main(String[] args){
    	new OuterClass().test();
    }
}
0
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
25 nov. 2011 à 17:01
Bonjour,

method1() est, en fait, public void actionPerformed(ActionEvent ae) dans mon vrai programme: comment puis-je l'appeler dans la méthode test() que tu m'as donnée, Julien ?
0
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
25 nov. 2011 à 17:10
ah !!!!!!!!!!!!
Merci beaucoup !!! ça marche selon ta méthode !!!
j'ai crée une méthode test() exactement comme tu me l'as dit et ça s'excute parfaitement bien !!!!

mais j'ai un dernier petit souci: mon programme est une fenête swing qui a un menu, lorsque je clique sur le sous menu 'Ouvrir' ça doit me laisser lire le nombre de ligne que contient mon fichier, c'est bien fait par test(), mais le petit nouveau sousi est que dès le lancement de mon application le FileChooser() s'exécute avant que je clique sur le sous menu 'Ouvrir" !

comment faire ? je veux donner à l'utilisateur la possibilité de voir l'interface et de choisir d'ouvrir un fichier ou non

merci
0
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
25 nov. 2011 à 17:31
je pense que c'est parce que j'ai appelé method1(), i.e. actionPerformed(null) avec un ActionEvent qui est nul: donc c'est pour celà que la fenêtre pour la sélection d'un fichier à ouvrir s'ouvre dès le premier instant du lancement de mon application: donc je dois changer, apparemment, null à un autre ActionEvent: mais lequel, svp ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
28 nov. 2011 à 08:12
Tu de dois jamais appeler une méthode actionPerformed, elle est appelée automatiquement par une action de l'utilisateur. Ce que tu dis est possible.
0