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 :

[Layout] Taille fixe ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut [Layout] Taille fixe ?
    Bonjour, question sans doute basique mais je n'arrive pas à mettre en œuvre la chose suivante :

    Je veux réaliser une sorte de tableau avec un texte à gauche (jlabel,sur une ligne) et un label/bouton à droite. Cependant peu importe la longueur du texte, je voudrais que son label ait toujours la même taille, de même pour le label/bouton
    Or mon problème, peu importe le layout, et que sur 2 panel l'un en dessous de l'autre, les tailles changent ...
    J'ai testé avec les poids du gridBagLayout (même poids pour les composants des 2 panels) et pourtant ce n'est pas pareil au final ...



    N'y a t'il pas moyen de fixer la largeur des colonnes du layout et de forcer le composant à utiliser cette place ?

    Voilà question de débutant mais je n'arrive pas à obtenir l'affichage désiré c'est assez frustrant :p

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Essaie de passer le fill de tes buttons à GridBagConstraits.HORIZONTAL

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    C'est déjà le cas :/

    voici les ajouts des composants du premier panel (gridbaglayout)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mSystemPanel.add(mSystemCronLab, new GBC(0, 0).setInsets(1).setAnchor(GBC.WEST).setWeight(80, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemCronState, new GBC(1, 0).setInsets(1).setAnchor(GBC.WEST).setWeight(20, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemWebLab, new GBC(0, 1).setInsets(1).setAnchor(GBC.WEST).setWeight(80, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemWebState, new GBC(1, 1).setInsets(1).setAnchor(GBC.WEST).setWeight(20, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemLogLab, new GBC(0, 2).setInsets(1).setAnchor(GBC.WEST).setWeight(80, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemLogState, new GBC(1, 2).setInsets(1).setAnchor(GBC.WEST).setWeight(20, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemKernelLab, new GBC(0, 3).setInsets(1).setAnchor(GBC.WEST).setWeight(80, 1).setFill(GBC.HORIZONTAL));
        mSystemPanel.add(mSystemKernelState, new GBC(1, 3).setInsets(1).setAnchor(GBC.WEST).setWeight(20, 1).setFill(GBC.HORIZONTAL));
    Pareil pour le deuxième, 80/20 au niveau des poids et même contraintes

  4. #4
    Membre confirmé Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Bonjour,
    as-tu essayé setMaximumSize et setMinimumSize sur les JLabel et le label/boutons ?
    Le problème semble venir du fait que sur la panneau1, un des JLabel contient un texte très long. Sa PreferedSize doit donc normalement lui permettre d'afficher tout le texte. Or le GridBagLayout s'occupe de la PreferredSize (ce qui n'est pas le cas de tous les Layout)
    pour la constante Weight, ça ne correspond pas vraiment à la taille du composant mais au nombre de "cellule" qu'il occupera. Vu que pour tous les éléments de gauche tu indiques 80, ils occupent tous 80 "cellules virtuelles". Tu les mettrais tous à 1, cela reviendrait au même. cela pourrait servir si par exemple tu voulais mettre en haut un JLabel qui soit au dessus de la premiere ET deuxieme colonne. Alors en donnant une valeur de 2 pour le poids a ce JLabel, et de 1 pour les autres, tu auras cet effet.
    Pour que tes composants aient tous la meme taille, une seule solution avec le GridBagLayout:
    setMaximumSize
    setMinimumSize
    setPreferredSize
    avec les memes valeurs.

    Bon code,
    kerinel

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Solution bête mais qui fonctionne; utilises un seul panel au lieu de deux

    Sinon pour la taille le GridBag se dimensionne par rapport à la prefferedSize

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Bonjour,
    as-tu essayé setMaximumSize et setMinimumSize sur les JLabel et le label/boutons ?
    j'avais testé brièvement setMinimumSize et setMaximumSize en mettant en paramètre component.getPreferedSize mais en effet qu'en j'y réfléchi la taille pref est celle que le texte prendra ...

    Le problème semble venir du fait que sur la panneau1, un des JLabel contient un texte très long. Sa PreferedSize doit donc normalement lui permettre d'afficher tout le texte. Or le GridBagLayout s'occupe de la PreferredSize (ce qui n'est pas le cas de tous les Layout)
    Bon à savoir merci

    pour la constante Weight, ça ne correspond pas vraiment à la taille du composant mais au nombre de "cellule" qu'il occupera. Vu que pour tous les éléments de gauche tu indiques 80, ils occupent tous 80 "cellules virtuelles". Tu les mettrais tous à 1, cela reviendrait au même. cela pourrait servir si par exemple tu voulais mettre en haut un JLabel qui soit au dessus de la premiere ET deuxieme colonne. Alors en donnant une valeur de 2 pour le poids a ce JLabel, et de 1 pour les autres, tu auras cet effet.
    Je pensais que les propriétés gridwidth et gridheight jouait ce rôle, les poids permettant de remplir l'espace libre.

    Pour que tes composants aient tous la même taille, une seule solution avec le GridBagLayout:
    setMaximumSize
    setMinimumSize
    setPreferredSize
    avec les memes valeurs.
    En définissant uniquement le setPreferedSize() dans mon "initComponents" perso, ça semble fonctionner, la seule taille que je n'avais pas changée ...

    Merci beaucoup en tout cas, même si je trouve "dommage" de devoir entrer "à la main" la taille du composant, pour chaque composant ...

  7. #7
    Membre confirmé Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Oups, je m'aperçois que dans mon post précédent j'ai mélangé weightx/y et gridwidth/gridheight.

    Tout est


    Sinon tu peux peut etre utilisé un GroupLayout qui semble plus adapté à ce genre de disposition. Mais pas sur que tu t'affranchiras du probleme de cohérence entre les deux JPanel.

    bon code,
    kerinel

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

Discussions similaires

  1. case de taille fixe
    Par druidev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 27/11/2007, 22h16
  2. Création de Table de taille fixe
    Par PierrotY dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 12/07/2006, 14h33
  3. Donner une taille fixe à un widget GTK
    Par gwenhael dans le forum GTK+
    Réponses: 3
    Dernier message: 26/06/2006, 14h59
  4. Taille fixe div css
    Par Jiraiya42 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 26/04/2006, 20h30

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