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

AWT/Swing Java Discussion :

Recuperer un constructeur


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut Recuperer un constructeur
    Bonjour,

    je suis relativement nouveau sous Java et j'ai un petit souci plutôt lié je pense au coté POO.
    J'ai une classe Consultation qui hérite de JPanel et dedans, j'ai fait un constructeur. Dans ce dernier je crée un JPanel que je remplis avec deux JTable.
    Dans ma première classe, je crée un nouvel objet Consultation. Je m'attends donc à ce que l'objet soit un JPanel qui contienne mes JTable. Le problème, c'est que cet objet ne contient pas un JPanel avec les éléments en question mais juste un JPanel vide. Comment dois je faire pour récupérer le JPanel avec ses éléments issu du constructeur ?

    Merci de votre aide !

    [ Sujet déplacé depuis le forum java par Viena ]
    Les Règles du Forum

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    salut,

    Je pense que tu as oublié d'ajouter tes JTable dans ton JPanel :
    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
     
     
    public class Consultation extends JPanel
    {
      JTable monJT1,monJT2;
      public Consultation()
      {
        super();
        monJT1=new JTable();
        monJT2=new JTable();
        this.add(monJT1);
        this.add(monJT2);
        (...)
      }
    }
    Ceci est un exemple fictif, à adapter

    mavina

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Non je les ajoute bien Je mets le code incriminé :
    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 Consultation extends JPanel{
      protected JPanel onglet1;
      protected JTable infosAuto, infosManuelles;
      public Consultation (String path)    {
     
            onglet1 = new JPanel();
            onglet1.setLayout(new BorderLayout(0,10));
     
     
            // Ajout des JTable pour les infos
            infosAuto = new JTable(new TableModelInfo());
            onglet1.add(infosAuto, BorderLayout.PAGE_START);        
            infosManuelles = new JTable(new TableModelInfo());
            onglet1.add(infosManuelles, BorderLayout.CENTER);
      }
    }
    Les valeurs pour les JTable sont ajoutées via la TableModelInfo (c'est juste pour les tests). Et le String path, c'est pour une autre fonction plus tard.

  4. #4
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    comment fais tu l'appel de ton Objet consultation???
    est-ce comme suit ??

    Consultation C = new Consultation("toto");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Tout à fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Consultation onglettest = new Consultation(path);
    et path est une variable.

  6. #6
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    montre nous le code du constructeur de la Frame contenant ton JPanel...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Le voilà :
    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
        public Prep(String path)    {
     
            this.path = path;
            // La frame globale
            frame = new JFrame("PREP_TEST");
            frame.setSize(1024, 768);    
     
     
            pannel = new JPanel();        
            conteneur = frame.getContentPane();
            conteneur.setLayout(new BorderLayout());
            menuBarre = new JMenuBar();
     
            // Le menu Fichier
            menu = new JMenu("Fichier");        
            objet = new JMenuItem("Ouvrir");
    //        objet.addActionListener(actionListener);
            menu.add(objet);
            menuBarre.add(menu);
     
            // Ajout des onglets
            onglets = new JTabbedPane(SwingConstants.TOP);
     
            // Premier onglet
            Consultation onglettest = new Consultation(path);
            onglettest.setPreferredSize(new Dimension(1000, 600));
            onglets.addTab("Consultation", onglettest);
            onglets.setOpaque(true);
            pannel.add(onglets);
     
     
            conteneur.add(menuBarre, BorderLayout.NORTH);
            conteneur.add(pannel, BorderLayout.CENTER);
     
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

  8. #8
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    l'embetant avec les JTabbedPane c'est que si la dimension n'est pas bonne l'affichage ne se fait pas bien...
    donc verifie tes dimensions...
    sinon je ne vois pas dans ton code ce qui peut clocher.
    quelques trucs cependant:
    pour rajouter une barre de menu sur une frame tu as simplement
    frame .setJMenuBar(taBarreDeMenu);
    donc pas besoin de ton borderLayout...

    ensuite essai de faire
    frame.pack();
    pour voir si ca change qqchose

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Moi j'ai vu .
    Dans ton constructeur de Consultation : tu crées un autre JPanel (onglet1) auquel tu ajoutes les tables. Mais ton objet de type Consultation ne contient rien ! Et onglet1 n'est jamais ajouté à aucun composant.

    Essaie ceci :
    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 Consultation extends JPanel{
      //protected JPanel onglet1;
      protected JTable infosAuto, infosManuelles;
      public Consultation (String path)    {
            
            //onglet1 = new JPanel();
            this.setLayout(new BorderLayout(0,10));
            
            
            // Ajout des JTable pour les infos
            infosAuto = new JTable(new TableModelInfo());
            this.add(infosAuto, BorderLayout.PAGE_START);        
            infosManuelles = new JTable(new TableModelInfo());
            this.add(infosManuelles, BorderLayout.CENTER);
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Ca n'est pas un problème de dimension car si je ne prends que le code du constructeur de Consultation et que je le mets à la place de Consultation onglettest = new Consultation(path); ça marche sans problème. Donc je pensais que je devais me tromper dans mon constructeur de Consultation mais visiblement ça n'est pas le cas Je suis un peu perdu là :/

    Merci pour les astuces en tout cas

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Citation Envoyé par xavlours
    Moi j'ai vu .
    Dans ton constructeur de Consultation : tu crées un autre JPanel (onglet1) auquel tu ajoutes les tables. Mais ton objet de type Consultation ne contient rien ! Et onglet1 n'est jamais ajouté à aucun composant.

    Essaie ceci :
    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 Consultation extends JPanel{
      //protected JPanel onglet1;
      protected JTable infosAuto, infosManuelles;
      public Consultation (String path)    {
            
            //onglet1 = new JPanel();
            this.setLayout(new BorderLayout(0,10));
            
            
            // Ajout des JTable pour les infos
            infosAuto = new JTable(new TableModelInfo());
            this.add(infosAuto, BorderLayout.PAGE_START);        
            infosManuelles = new JTable(new TableModelInfo());
            this.add(infosManuelles, BorderLayout.CENTER);
      }
    }
    Merci !!!!!

  12. #12
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut

    euh, en même temps, si tu avais lu mon post en "profondeur", c'est exactement ce que je t'ai proposé

    n'oublie pas le ...

    mavina

  13. #13
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par mavina
    euh, en même temps, si tu avais lu mon post en "profondeur", c'est exactement ce que je t'ai proposé
    Et visiblement ça n'a pas suffit ... d'où mon post. Mais tu as effectivement été le premier à écrire la solution. Je te dois combien en royalties ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  14. #14
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par xavlours
    Et visiblement ça n'a pas suffit ... d'où mon post. Mais tu as effectivement été le premier à écrire la solution. Je te dois combien en royalties ?
    Salut,

    Non pas de royalties .
    Non mais bon j'ai tendance à montrer un exemple générique et à ne pas "faire à la place". Si la personne arrive à adapter l'exemple à son cas, alors elle aura compris. Si tu lui sers sur un plateau, elle copie colle et puis voilà :\

    allez zou !

    mavina

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Citation Envoyé par mavina
    Salut

    euh, en même temps, si tu avais lu mon post en "profondeur", c'est exactement ce que je t'ai proposé

    n'oublie pas le ...

    mavina
    Effectivement Mais comme je l'ai mis justement dans mon premier post, c'est plus un problème conceptuel dans mon cas. Pour preuve mon 2e message où je suis persuadé que j'ajoute bien le contenu au JPanel sans voir la subtilité du this qui est tout ce qu'il y a de plus logique pourtant Au final, c'est une erreur bien profitable car je ne pense pas (n'espère pas ? ) que je referai cette erreur.

  16. #16
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par Zanton
    Effectivement Mais comme je l'ai mis justement dans mon premier post, c'est plus un problème conceptuel dans mon cas. Pour preuve mon 2e message où je suis persuadé que j'ajoute bien le contenu au JPanel sans voir la subtilité du this qui est tout ce qu'il y a de plus logique pourtant Au final, c'est une erreur bien profitable car je ne pense pas (n'espère pas ? ) que je referai cette erreur.
    Salut,

    petite précision au cas où : this n'est pas obligatoire dans ce cas, tu peux tout simplement mettre add(tonElement) ...

    c'était juste une parenthèse

    mavina

  17. #17
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par mavina
    Si tu lui sers sur un plateau, elle copie colle et puis voilà :\
    Tout à fait d'accord, c'est assez risqué.
    Mais dans ce fil, le code ne servait que de support pour lui faire comprendre le principe.
    Si en voyant le code "problème" et le code "solution" y'avait toujours pas de déclic, il fallait faire le lien entre les deux, donc, c'est vrai, lui donner le code correct.

    Mais je lui ai pas balancé comme ça : "tiens voila ton code et tchao". Non, j'ai commenté le code.

    Moralité : il faut toujours commenter son code.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

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

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 16h32
  2. [Reflection] Récupérer un constructeur ayant un paramètre int
    Par narmataru dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/07/2004, 10h53
  3. Réponses: 2
    Dernier message: 22/07/2002, 19h02
  4. Réponses: 4
    Dernier message: 18/07/2002, 14h32
  5. recuperer la résolution de l'écran
    Par florent dans le forum C++Builder
    Réponses: 11
    Dernier message: 07/06/2002, 16h01

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