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

Java Discussion :

L'accès à une méthode d'une autre classe d'un autre package


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut L'accès à une méthode d'une autre classe d'un autre package
    Bonjour.
    J'ai une question concernant l'accès à une méthode d'une autre classe d'un autre package.
    J'ai une méthode qui est appelée ...
    - comme le plus souvent par des membres 1) de la classe qui l'habrite et
    par des membres 2) d'autres classes qui font partie du même package (no explicit modifier : package-private)
    - mais aussi par des membres 3) d'une classe d'un package voisin.
    Mais la formulation de l'appel de la méthode dans ce dernier cas bloque quelque part.

    La hiérarchie et les membres sont les suivants :
    - J'ai une méthode qui est appelée : composListPairPuiss(...)
    - par des membres : actionPerformed(ActionEvent évén_MachChoisies)
    - 1) de la classe qui l'habrite - MonModTable_MachChoisies .
    - et 2) d'autres classes : public class TabPan_MachChoisies .
    - qui font partie du même package : package monotone.machchoisies
    - mais aussi par des membres : actionPerformed(ActionEvent évén_ChoixMach)
    - 3) d'une classe d'un package voisin : package monotone.choixdemach;
    - Mais la formulation de l'appel de la méthode que le compilateur bloque :
    énElecTranPuiss.getTabPnl_MachChoisies().getTable_MachChoisies().getModel().
    composListPairPuiss((byte) énÉlecTranPuiss.getTabPnl_MachChoisies().getTable_MachChoisies().getRowCount() );
    Plus précisément, lorsque le '.' est tapé à la suite de 'getModel()', la liste des méthodes que présente automatiquement le pré-compilateur (NetBeans IDE 8.0.2) ne comprend aucune des méthodes de ma fabrication, notamment 'composListPairPuiss(...)'. Pourtant, les classes et méthodes concernées sont déclarées 'public', soit accessibles à tous les packages, classes et méthodes du projet.

    Les extraits de code sont les suivants :
    1ère classe (ou fichier)
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package monotone.machchoisies;
     
    import ...
    ...
    import monotone.ÉnergParTranchePuiss;
     
     
    /** 
     */
    public class TabPan_MachChoisies extends JPanel implements ActionListener   
    {   
        // Déclarations des variables
        private final ÉnergParTranchePuiss énÉlecTranPuiss;
     
        private final JTable table_MachChoisies;     
        private final MonModTable_MachChoisies monModTable_MachChoisies;
        ...
     
        private final JButton bout_EffacerLigne;
     
     
        // Constructor
        public TabPan_MachChoisies(ÉnergParTranchePuiss énergTranchePuiss)
        {   
            // Initialisation des variables
            ...
     
            monModTable_MachChoisies = new MonModTable_MachChoisies();
            table_MachChoisies = new JTable(monModTable_MachChoisies);
    2ème classe (ou fichier)
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package monotone.machchoisies;
     
    import ...
    ...
     
    public class MonModTable_MachChoisies extends AbstractTableModel
    {   
        // Déclarations des variables
        ...
     
        // No modifier : "Package-private" : Class and Package
                MonModTable_MachChoisies()                        // Constructor
        {   
            ...
        }
     
        // Plusieurs méthodes '@Override public ...'
        @Override public int getColumnCount()
        {   return libellésColonnes.length;
        }    
     
        // Une méthode particulière
        /** Access required in package '...monotone.ttescombindemach' --> public
         * Méthode Utilisée par  
         * - 'additValCell_MachChoisies_Combin()' dans 'MonModTable_TtesCombMach'.
         * - 'additValCell_MachChoisies_Combin()' dans 'MonModTable_TranchesPuiss'.
         * - 'actionPerformed()' - 'bout_EffacerLigne' dans 'TabPan_MachChoisies'.
         * @return 
         */
        public ArrayList<BigDecimal[]> getMachChoisies()
        {
            return machChoisies;
        }
     
     
       /** Access required in packages         --> 'public' modifier.
        * - '...monotone.choixmach'    > actionPerformed(ActionEvent évén_ChoixMach)
        *   > bout_MachÀPasser
        * - '...monotone.machchoisies' > actionPerformed(ActionEvent évén_MachChoisies) 
        *   > bout_EffacerLigne
        * @param nbreMach
        * @return limPuissDéliverable
        */
        public BigDecimal[][] composListPairPuiss(byte nbreMach)
        {
            byte nbreCombinMach = (byte)(Math.pow(2, nbreMach) -1);
            ...
            return limPuissDéliverable;
        }
    3ème classe (ou fichier)
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    package monotone.choixdemach;
     
    import ...
    //  import monotone.machchoisies.MonModTable_MachChoisies;
     
    public class TabPan_ChoixMach extends JPanel implements ActionListener
    {   
        // Déclarations des variables
        ...
     
        // Constructeur
        public TabPan_ChoixMach(ÉnergParTranchePuiss énergTranchePuiss)
        {   
            // Initialisation des variables
            ...
     
        // Action listener des radio-bouttons et des bouttons ...
        @Override public void actionPerformed(ActionEvent évén_ChoixMach)
        {   
            if (évén_ChoixMach.getSource() == bout_MachÀPasser)
           // Bouton 'Ajouter cette mach. à la table _MachChoisies'
            {   
                byte ligneSélectionnée_ChoixMach = (byte) table_ChoixMach.getSelectedRow();
     
                if (ligneSélectionnée_ChoixMach >= 0)
                {  /* Insertion dans la table 'table_MachChoisies' d'une machine sélectionnée dans 
                    * la table 'table_ChoixMach'.           */
                    ...
                }
     
                énElecTranPuiss.getTabPnl_MachChoisies().getTable_MachChoisies().getModel().
                    composListPairPuiss((byte) énÉlecTranPuiss.
                        getTabPnl_MachChoisies().getTable_MachChoisies().getRowCount() );
            }
    Vous auriez une piste de recherche ?
    Merci d'avance.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

  2. #2
    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
    Hello,

    on n'a pas tout le code, mais il est probable que la méthode getModel() renvoie un TableModel et non pas un MonModTable_MachChoisies. Du coup, impossible d'utiliser les méthodes spécifiques de MonModTable_MachChoisies sans faire un cast (et c'est en supposant que le modèle utilisé soit bien celui-ci et pas un autre.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut
    Hello Thelvin.
    Bien vu de ta part; c'était bien cela !:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        import monotone.machchoisies.MonModTable_MachChoisies;
                
         ((MonModTable_MachChoisies) énÉlecTranPuiss.getTabPnl_MachChoisies().
                getTable_MachChoisies().getModel()).composListPairPuiss_CombinMach(
                    (byte) énÉlecTranPuiss.getTabPnl_MachChoisies().getTable_MachChoisies().
                         getRowCount() );
    Comment n'y ai-je pas (re)pensé ! J'ai déjà eu ce problème précédemment, même plusieurs fois ...
    Deviendrait-on quand même un peu moins alerte, à partir de 80 ans ?
    Remerciements sempiternels.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2017, 11h49
  2. [JNA / DLL] Accès aux méthodes d'un sous-classe
    Par bergoliv dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 26/01/2013, 18h03
  3. Problème d'accés à une autre bécane sur le réseau
    Par zooffy dans le forum Windows 7
    Réponses: 9
    Dernier message: 10/07/2011, 09h56
  4. Réponses: 4
    Dernier message: 04/07/2011, 16h50
  5. Une seule classe public dans un package
    Par bubulemaster dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 30/05/2008, 21h06

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