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 :

centrer un JPanel ou 'Pourquoi j'ai une size nulle?'


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut centrer un JPanel ou 'Pourquoi j'ai une size nulle?'
    Bonjour,

    je réalise une interface et j'ai dans ma JFrame un titre, une ligne de boutons et le centre de la fenetre où j'ai différents objets.

    Je défini le layout du contentPane comme étant un BoderLayout, il me permet de mettre comme il faut mon panel de titre au NORTH, ma barre de boutons au SOUTH et de mettre un JPanel centre au CENTER.

    Comme au centre, je souhaite faire des trucs un peu plus évolués, le JPanel qui me sert de fond pour le centre a un Layout null, ça me permet de paramétrer moi-même les dimensions des différents objets selon mes besoins.

    Tout marchait très bien tant que je plaçais les objets "en dur".

    Maintenant, je veux placer les objets en fonction de la taille du fond et le problème c'est que toutes les fonctions getSize(), getPreferredSize(), etc... me donnent (0, 0).
    mon JPanel n'a pas de dimension...

    Comment ça se fait et comment puis-je trouver sa taille pour, par exemple, centrer un composant dont je connais les dimensions?

    En clair, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    vue.getContentPane().add(titre, BorderLayout.NORTH);
    vue.getContentPane().add(boutons, BorderLayout.SOUTH);
    JPanel fond = new JPanel(null);
    vue.getContentPane().add(fond);

  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    getSize te retourne une Dimension (java.awt), normalement, si ta JFrame a une taille fixe, il devrait te retourner une dimension > 0. As tu essayé getBounds ?

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Oui, j'ai bien essayé getBounds() et c'est la même chose.

    Visiblement, dans mon appli, j'ai réussi à résoudre le problème :
    j'ai fait un validate() sur le parent, et après, j'ai les dimensions, mais le truc, c'est que j'avais recréé le problème dans un cas plus simple, et là, cette feinte ne marche pas...

    Si quelqu'un peut me dire pourquoi, je suis intéressé, car ça m'intrigue au plus haut point...

  4. #4
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Au fait, tu as fait un maFrame.pack() ?

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Non, pour la simple raison que ma fenêtre principale a une taille fixe et n'est pas redimensionnable.

    Pour l'instant, elle fait 1024*768, mais j'aimerais pouvoir faire en sorte que ça marche si je la met en 800*600 par exemple...

  6. #6
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    A mon avis c'est que quand tu appelles ces méthodes (getSize(), getPreferredSize(), ...) ta fenêtre n'est pas visible et donc leur taille est de 0 ...

    si tu utilise des layouts tu n'auras pas ces problèmes...

Discussions similaires

  1. Impossible de centrer un JPanel dans une fenêtre
    Par jklmmlkj dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/04/2011, 14h08
  2. centrer un JPanel dans une frame
    Par line86 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/01/2009, 14h38
  3. Réponses: 2
    Dernier message: 26/10/2005, 11h44
  4. Réponses: 12
    Dernier message: 14/07/2005, 16h55
  5. Réponses: 9
    Dernier message: 31/05/2005, 10h05

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