IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

transmettre le this de la classe mère


Sujet :

Langage Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut transmettre le this de la classe mère
    Bonjour,

    J'ai une classe étendant JPanel.
    Elle contient des boutons pour lesquels j'ai affecté des évènements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    btn_Adherents = new JButton( new cActionAdherent());
    Dans le code de cette classe, j'ai implémenté ces évènements à travers des classe internes étendant AbstractAction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private class cActionAdherent extends AbstractAction
    {
      private static final long serialVersionUID = 201001L;
     
      cActionAdherent()
      {
         super();
      }
     
      @Override
      public void actionPerformed( ActionEvent AE )
      {
        formulaireAdherent.afficheFormulaire( -1 );
      }
    }
    Je voudrais transmettre en paramètre de la méthode afficheFormulaire le paramètre this correspondant à la classe mère JPanel, qui contient donc les classes de gestion des évènements. Le problème est que si je code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      public void actionPerformed( ActionEvent AE )
      {
        formulaireAdherent.afficheFormulaire( this );
      }
    cela correspond au pointeur de la classe cActionAdherent, et non pas celui de la classe JPanel

    J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formulaireAdherent.afficheFormulaire( super.this );
    ...mais c'est pas opérationnel ça

    J'ai confiance en Java, je sais que la solution existe...mais je ne la trouve pas

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formulaireAdherent.afficheFormulaire( NomDeLaClasseMere.this );
    a++

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    JPanel n'est pas la classe mère mais la classe englobante! La classe mère de cActionAdherent est AbstractAction

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Entre parenthèses, quand la syntaxe est méconnue on peut aussi essayer de s'en passer.

    Par exemple, en filant une référence vers le JPanel en cours quand on construit un CActionAdherent. Ce qui permet ensuite de passer cette référence en paramètre à afficheFormulaire().

    Autre possibilité, implémenter, dans la classe englobante, une méthode afficheFormulaireOnMe(), qui donc pourra être appelée par ses classes internes.

    C'est pas forcément mieux, c'est une question de goûts, mais il y a tellement de gens qui se demandent ce que ça veut dire, quand ils lisent NomDeLaClasseMere.this ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 489
    Points
    15 489
    Par défaut
    Personnellement la première fois que j'ai vu NomDeLaClasseMere.this, j'ai immédiatement compris ce que ça faisait et j'ai nettoyé tout mon ancien code qui contournait ce problème.

    C'est quand même bien plus simple propre ainsi.

  6. #6
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Merci à tous pour ces tuyaux !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formulaireAdherent.afficheFormulaire( NomDeLaClasseMere.this );
    C'est d'une simplicité...et ça marche

    C'est trop fort JAVA !
    @ bientôt...

    Salut & @+ sur 3W!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 07/02/2006, 14h19
  2. [POO]Appelé une méthode d'une classe mère
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 14h44
  3. Réponses: 5
    Dernier message: 16/08/2005, 10h30
  4. Réponses: 11
    Dernier message: 08/07/2005, 14h48
  5. Ma classe fille n'hérite pas de sa classe mère
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2005, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo