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 :

Heritage de classe avec classes internes


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut Heritage de classe avec classes internes
    Bonjour à tous,

    j'ai une fenetre modale dans mon application composée de plusieurs classes internes, dojnt une classe qui gère les évenements dans ce genre là:

    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
    16
     
    public class MyFenetre extends JDialog
    {
    JPanel mainPanel=new JPanel();
    JButton controlButton= new JButton();
    controlButton.addActionListener(new ActionSurveillant());
    ...
    }
    //puis pour la classe Control:
    //Attention c'est une classe interne
    class ActionSurveillant implements ActionListener
    {
    public void actionPerformed(ActionEvent ev) 
    {
    ...//code executé à l'appuis du bouton par exemple
     }
    j'ai besoin d'une fenetre exactement identique mais qui aura un comportement différent au clique du bouton "ok".

    Comment hériter de cette classe "MyFenetre" et redéfinir la methode actionPerformed() de la classe anonyme "ActionSurveillant" ?
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut Re: Heritage de classe avec classes anonymes
    la classe anonyme "ActionSurveillant" n'est pas vraiment annonyme puisqu'elle a un nom
    pour redéfinir une methode quand tu instancie une classe, tu dois fair eun truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    new ActionSurveillant() {
      public void actionPerformed(ActionEvent ev)
      {
        ...
      }
    }
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    d'abord ActionSurveillant n'est pas une classe anonyme mais seulement interne. Quand à ta question, je crois qu'il est + simple d'implémenter directement ActionListener ds la classe MyFenetre. De toute façon je ne crois pas qu'il est possible de redefinir une methode ds une classe Interne sans devoir redefinir entièrement cette classe et reassigner la variable membre correspondante.

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Sorry, j'ai mal implémenté mon exemple (ré-edité à l'instant).
    La classe ActionSurveillant est une classe interne à la classe MyFenetre.

    Je ne sais donc pas comment implementer ma classe "fille" pour redéfinir la methode actionPerformed().
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par rootel77
    d'abord ActionSurveillant n'est pas une classe anonyme mais seulement interne. Quand à ta question, je crois qu'il est + simple d'implémenter directement ActionListener ds la classe MyFenetre. De toute façon je ne crois pas qu'il est possible de redefinir une methode ds une classe Interne sans devoir redefinir entièrement cette classe et reassigner la variable membre correspondante.
    Alors quelle est la différence entre une classe dite "interne" et "anonyme" ?
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  6. #6
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    une classe interne n'est pas forcement anonyme, par ex. ta classe est declaree "separement" et elle a un nom, une classe anonyme n'a pas de nom. c le genre declaré à la volée
    new ActionListener() {
    ....
    }

  7. #7
    Membre régulier Avatar de jiraiya
    Inscrit en
    Mai 2002
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    une classe anonyme est définit dans le corps d'une méthode ou directement après un new, une classe interne est définit de la même manière que classe classique mais à l'intérieur d'une autre classe et en dehors des méthodes de cette classe

  8. #8
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par rootel77
    une classe interne n'est pas forcement anonyme, par ex. ta classe est declaree "separement" et elle a un nom, une classe anonyme n'a pas de nom. c le genre declaré à la volée
    new ActionListener() {
    ....
    }
    Ok d'accord merci pour l'info.

    Bon alors mon problème est comment hériter d'une classe elle-même composée de classes internes ?
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  9. #9
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    si la classe doit seulement implementer ActionListener, la solut° + simple a mon avis est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MyFenetre extends JDialog implements ActionListener {
          ...
          controlButton.addActionListener(this); 
          ...
          public void actionPerformed(ActionEvent e) {
               ...
          }
    }
    ensuite ds la classe heritant de MyFenetre tu redefinis la methode actionPerormed

  10. #10
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par rootel77
    si la classe doit seulement implementer ActionListener, la solut° + simple a mon avis est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MyFenetre extends JDialog implements ActionListener {
          ...
          controlButton.addActionListener(this); 
          ...
          public void actionPerformed(ActionEvent e) {
               ...
          }
    }
    ensuite ds la classe heritant de MyFenetre tu redefinis la methode actionPerormed
    Malheureusement je n'ai pas pu implementer de cette façon afin de récuperer des infos de plusieurs JPanel différents contenus dans des onglets.

    apparement je ne peux donc pas redéfinir la methode contenue dans une classe interne on dirait...
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  11. #11
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Regis.C
    Malheureusement je n'ai pas pu implementer de cette façon afin de récuperer des infos de plusieurs JPanel différents contenus dans des onglets.
    je n'ai pas bien saisi ta raison, une autre solution si ca peut t'aider:
    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
    16
    17
    18
    19
    20
     
    class MyFenetre extends JDialog {
        controlButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                  onControlClick(e);
            }
        });
     
        protected void onControlClick(ActionEvent e) {
          ...
        }
    }
     
    class MyFenetreFille extends MyFenetre {
     
         //redfinir la methode
         protected void onControlClick(ActionEvent e) {
               ...
        }
    }

  12. #12
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Merci Rotell77, c'est exactement ce que je cherchais !

    Je n'y avais pas pensé.

    Du coup, si j'ai tout comprit, on utilise une classe anonyme de type ActionListener dans ton code ?!
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

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

Discussions similaires

  1. Lier classe avec classe formulaire
    Par gabvoir dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/12/2010, 14h21
  2. Recupérer une classe interne avec Class.forName
    Par Pragmateek dans le forum Général Java
    Réponses: 4
    Dernier message: 24/02/2008, 20h53
  3. Probleme avec classes internes
    Par pseudobidon57 dans le forum Langage
    Réponses: 5
    Dernier message: 03/07/2007, 11h49
  4. Heritage par sous classe avec discriminateur
    Par hipchic dans le forum Hibernate
    Réponses: 1
    Dernier message: 04/01/2007, 19h51
  5. Objets/Classes avec un SGBD
    Par tiboleo dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 09/11/2003, 16h04

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