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

Agents de placement/Fenêtres Java Discussion :

Ajout d'un Component dans un Container


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut Ajout d'un Component dans un Container
    Bonjour,

    J'ai une classe qui étend JFrame.
    Dans le constructeur, je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JTree tree = new JTree(hashListe);
    JPanel panneau1 = new JPanel(new GridLayout(1, 1, 30, 30));
    tree.setRootVisible(false);
    panneau1.add(new JScrollPane(tree));
    Container contentPane = getContentPane();
    contentPane.add(panneau1, BorderLayout.WEST);
    Plus tard, j'appelle une méthode qui doit remplir BorderLayout.CENTER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Container contentPane = getContentPane();
    contentPane.setLayout(new BorderLayout(5, 5));
    JScrollPane scrollPane = new JScrollPane(table);
    contentPane.add(scrollPane, BorderLayout.CENTER);
    contentPane.validate();
    repaint();
    Les lignes de la table se dessinent mais rien ne s'écrient dedans. Par contre, si je clique sur une ligne du tableau, alors la ligne apparait au-dessus de BorderLayout.WEST

    Que dois-je faire ?

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut
    Salut,

    Le problème doit provenir de ta méthode quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contentPane.setLayout(new BorderLayout(5, 5));
    Le probleme devrait etre resolu si tu enleves cette ligne, et si tu veux changer les espaces entre les composants, tu peux faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            BorderLayout borderLayout = (BorderLayout)contentPane.getLayout();
            borderLayout.setHgap(5);
            borderLayout.setVgap(5);
    En espérant que ça t'aide.
    sylvain_2020

  3. #3
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut
    Bonsoir,

    Merci pour ta réponse mais j'ai essayé ta proposition mais cela ne change rien
    Voici ce que j'obtiens visuellement :
    Après l'appel au constructeur :

    Après appel à la méthode :

    Et enfin après clic sur la première ligne du tableau

  4. #4
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut
    Avant l'appel à ta méthode, il n'y pas un autre endroit ou tu changes le layout comme tu fais dans la méthode ?

  5. #5
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut
    Non

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    pourquoi mettre le "contentPane.setLayout(new BorderLayout(5, 5)); " dans le deuxième appel ?
    essaie de le faire dans le premier traitement avant le add(panneau1, BorderLayout.WEST);

  7. #7
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut
    Alors maintenant ça marche avec les modifications suivantes :
    1 - Je stocke dans une donnée membre mon contentPane
    2 - Dans le constructeur, j'ai maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JTree tree = new JTree(hashListe);
    JPanel panneau1 = new JPanel(new GridLayout(1, 1, 30, 30));
    tree.setRootVisible(false);
    JScrollPane scrollPane = new JScrollPane(tree);
    _contentPane.add(scrollPane, BorderLayout.WEST);
    3 - Lors de l'appel à l'autre méthode, j'ai maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     JScrollPane scrollPane = new JScrollPane(table);
    _contentPane.add(scrollPane, BorderLayout.CENTER);
    _contentPane.validate();
    repaint();
    4 - Au revoir le setLayout

    Merci pour votre aide

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

Discussions similaires

  1. ajout Component dans Form
    Par Smix007 dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/11/2009, 20h03
  2. ajouter une list dans un container
    Par empire.dev dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 22/05/2009, 20h04
  3. Etre notifié de l'ajout d'un job dans le spooler
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 12/11/2003, 21h52
  4. [JSP] Ajout d'une tache dans le planificateur Windows
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 12/09/2003, 15h10
  5. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12

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