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 :

ajout de composants graphiques après construction


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut ajout de composants graphiques après construction
    Bonjour,

    je travaille actuellement sur une interface graphique qui doit permettre à l'utilisateur d'ajouter des listes (JList dans un JScrollPane) de son choix.
    Il choisit en effet le contenu de sa liste dans un menu que je n'ai pas besoin d'expliciter ici.

    J'ai donc en attribut de cette fenêtre :
    - un JPanel doté d'un GridLayout
    - un vecteur de JList
    - un vecteur de JScrollPane
    - un DefaultListModel

    Lorsque le clic dans le menu est effectué, j'execute la méthode dans laquelle j'ajoute la liste. Le problème c'est que le composant n'apparaît pas...
    Si je le fais pendant la construction, tout marche impec pourtant.

    Voici ce que je fais dans cette méthode :
    je crée une nouvelle liste dans le vecteur des listes
    je crée un nouveau scrollpane dans le vecteur des scrollpanes
    j'ajoute enfin le scrollpane au JPanel

    (Tout ça en passant les bons attributs)

    Et rien ne se passe, d'où pourrait venir l'erreur?

    Merci d'avance pour toutes vos réponses, je suis vraiment coincé... ^^

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Si on ajoute/supprime des composants de l'ihm alors que celle-ci est déja affichée, il faut appeler la méthode validate().

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut Merci !

    ça marche, merci !

    Il manquait pas grand chose mais fallait le savoir

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par morph41 Voir le message
    Si on ajoute/supprime des composants de l'ihm alors que celle-ci est déja affichée, il faut appeler la méthode validate().
    Avec les composants Swing il est toutefois préférable d'appeler revalidate().

    Explication :
    • validate() vérifie, position et redimensionne tous les composants fils afin de les afficher correctement. La validation est donc faite "tout de suite".
    • revalidate() ajoute le composant dans une sorte de liste de composant à valider, ce qui sera fait avant la prochaine mise à jour de l'interface. La validation est donc légèrement reporté.


    Si tu modifies plusieurs éléments et que tu fais plusieurs appels à validate() tu risques de refaire plusieurs fois la validation avant la prochaine mise à jour de l'affichage.
    Alors que si tu utilises revalidate() la validation sera exécuté une seule fois avant l'affichage pour un résultat final identique


    a++

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Ah ok, c'est bon à savoir. Par contre revalidate ne peut être fait que sur les JComponent, donc si on ajoute un JPanel à une JFrame on est bien obligé d'appeler validate() de la JFrame, non? (JFrame n'hérite pas de JComponent)

  6. #6
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Oui mais JFrame est un cas à part car on ne lui ajoute pas vraiment directement de composant, mais plutôt à son contentPane...

    a++

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

Discussions similaires

  1. Composant graphique multiple (ou dérivé d'un TFrame)
    Par Jean Bovet dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/04/2007, 18h57
  2. [Composant Graphique] List Box "synchronisés"
    Par Raideman dans le forum C++Builder
    Réponses: 9
    Dernier message: 03/11/2006, 19h50
  3. Composant graphique
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/12/2004, 20h03
  4. Ajouter des composants à chaud avec Swing
    Par raj dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/12/2004, 10h34
  5. Réponses: 1
    Dernier message: 02/01/2003, 12h45

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