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 :

Taille des composants swing


Sujet :

AWT/Swing Java

  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Taille des composants swing
    Hello !

    Je suis un peu perdu sur la gestion de la taille des composants swing d'une interface graphique geree par GridBagLayout.

    Mon application est constituée d'uen serie de panels imbriqués dans lequel j'affiche des composants style JLabel, JTextfield, (autres panels), etc ...

    Pour gerer la taille des composants j'utilise l'option fill de GridBagConstraints, afin de les etirer ou non au sein des cellules affectés.

    Dans certains cas j'ai eu des comportements etranges, et je susi donc passé par l'affectation d'un setPreferedSize pour "fixer" la tailel de certains composants.

    Par contre j'ai du mal a tout stabiliser : et j'ai beau jongler entre les size, MinimalSize, Maximalsize, Preferredsize, ... pas de rendu correct.

    J'aurais besoin de quelques infos pour bien structurer mon interface graphique et en quelque sorte arriver a "predire" le resultat ... car pour le moment j'arrive surtout a prevoir ce qui va pas arriver (c'est a dire le resultat que je souhaite obtenir )

    [Edit]accessoirement j'aimerais savoir comment on peux changer uniquement une partie des dimenstions ?
    par exemple, si j'affecte un preferedsize sur un panel en width je suis obligé de saisir un preferredsize en height, ce qui m'embete car j'aimerais qu'il se redimentionne en fonction du contenu sans avoir a le calculer a la main (ou le tester apres N compil, pixels par pixels ...)

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    Le GridBagLayout c'est un super Layout !

    Quand on sait s'en servir.

    Ce qu'il faut c'est etre méthodique, pour s'en sortir, au début tu dispose tes composants sur des gridx et grixy en sachant que la largeur max d'une colonne est la largeur max d'un de ses composants (on parle toujours de preferred size).
    et pareille pour une hauteur de ligne.

    Si dans ton GridBagLayout du as des Panel avec des Layout (ben tu vas déguster). Car certains layouts imposent la taille aux enfants GridLayout (BorderLayout centre), d'autres imposent aux parents etc...
    Ca me rappel un moteur de règle que j'ai fait dans le temps. Ah la nostalgie.
    La ca devient trop compliquer à expliquer.

    Ensuite effectivement tu règles les weightX et weightY pour ajuster les largeurs et hauteur des colonnes pour ajuster à la taille du container du gridbaglayout (donc pour pas que tout reste au centre). Comme en HTML avec les % en gros.

    Enfin tu gères sur chaque widget les fill et les anchors.

    Bien souvent on fait des Layout dans des Layout dans des Layout ce qui est mauvais, pense peut etre à l'idée de passer en paramètre des builders un panneau avec un contexte de layout, et chaque builder à la responsabilité de faire le layout dessus (comme pour le graphisme)

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Hello
    Oui le GridBagLayout je commence pas trop mal a le maitriser mais comme tu l'a dit, la taille des colonne depends de celle des composants qu'il possede.
    du coup il faut bien gerer tout ca et c'est la que je m'y pert.

    J'utilise en effet un maximum de preferredsize pour attibuer une taille a un element.

    par contre, je ne sais pas comment gerer les dimension par moitier ...
    prenons par exemple le panel dont j'aimerais qu'il ai une taille fixe en largeur, et une hauteur variable, en fonction de son contenu.
    comment qu'on fait

    c'est sur ce genre de comportement, qui je pense s'appuie sur une combinaison judicieuse des min/max et prefered, que je m'arrache les cheveux.

    sinon j'aimerais bien que tu detaille un peu plus ton idee de builders ?

    Pour info je n'utilise que des GridBagLayout sur des panels imbriqués entre eux.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    j'imagine que sur le panel pour fixer la largeur il faut faire set maximum size 20,20000 et minimum size 200,0 par exemple.

    mais je pense que si tu en arrives là c'est peut etre que tu as une erreur de strategie dans ton building.

    pour l'idée du context, tu peux peut etre faire dans un signature de méthode du type designGUI(JPanel panel,Context context) panel ayant un GridBagLayout et Context contenant la posistion x et y ou tu peux commencer à placer des éléments. x et y peuvent aller jusqu'à 511

    Si tu as un screenshot de ce que tu veux faire je pourrai mieux te conseiller car le gridbaglayout n'est peut etre pas ta solution.

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    voila le screen, au format zip car au taf j'ai pas encore eu l'occasion d'installer Gimp pour generer du jpeg

    ce qui m'interesse c'est avant tout une bonen strategie de codage de l'IHM car ce programme me sert avant tout de formation
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    Je vois pas de soucis particulier sur ton screenshot, a priori tu as résolu tous tes problèmes

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    non
    en fait des que je touche a un composant souvent le reste plante

    Je viens de voir qu'en fait java prends trop de libertees sur la gestion graphique et qu'il faut systematiquement et pour chaques composants fiwer un min, un max et un preferred ou eventuelement en ommettre un si on veux laisser certaines libertées.

    ce qui est tres casse pieds question codage.
    J'ai vraiement du mal a anticiper le resultat graphique et bien souvent le comportement n'est pas celui attendu car Java prends la main sur le design et le fait a sa maniere

  8. #8
    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
    Quand tu travailles en Swing il faut en général ne pas trop penser en taille fixe de composants, mais plutôt en état redimensionnable ou non, quelle proportion utiliser lors du redimensionnement. Tout celà vient de la notion de layouts, en général le GridBag me tappe un peu sur les nerfs pour çà, mais en général on s'en sort. Il faut juste arrêter les fixations sur les tailles en pixel, ce n'est pas du tout GridBagFriendly, et amène au fur et à mesure d'autres problemes. Mieux vaux passer par des fill, des poids pour le redimensionnement, gérer les composants sur plusieurs cases, enfin voilà.

    Puis vraiment essayer le FormLayout ou le MigLayout (bis repetita).

  9. #9
    Membre éclairé Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Par défaut
    Il y a une méthode pas mal pour le GridBagLayout que j'utilise tout le temps maintenant cf:

    Ce lien

    Je créer des interfaces vraiment complexe en moins de 10 min.

  10. #10
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Citation Envoyé par nicotine002 Voir le message
    Il y a une méthode pas mal pour le GridBagLayout que j'utilise tout le temps maintenant cf:

    Ce lien

    Je créer des interfaces vraiment complexe en moins de 10 min.
    Oui je la connait mais elle n'apporte pas grand chose de plus a l'usage standard d'un GridBag
    Ce n'est qu'une maniere de coder l'IHM.

    Sinok : Je suis d'accord avec toi. Avec les layout il vaut mieux ne pas trop penser pixels.
    Par contre, il faut tout de meme conserver un minimum d'esthetique graphique
    J'ai par exemple 3 panels les uns au dessosu des autres, contenant chacun une lsite verticale de labels suivi de textfield.
    J'aurais par exemple souhaité alligner les textfield d'un panel a l'autre.
    si il est possible a l'aide des contraintes de GridBag d'alligner les textfields dans un meme layout, il n'est pas possible de les alligner d'un panel a l'autre, autrement que en fixant la taille des labels situés a gauche.

    Apres, des que je touche au Min/Max/preferred size, je fini toujours par avoir un comportement etrange et aleatoire . A moins de tous les affecter a desvaleurs precises (et la ca deviens tres illisible !)

Discussions similaires

  1. Regrouper des composants swing
    Par ToTo13 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/04/2007, 19h15
  2. Grosse appli avec des composants Swing ?
    Par marmotte dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/10/2006, 15h53
  3. [Swing] Problème de placement et de taille des composants
    Par CrazySeb dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/04/2006, 15h56
  4. [Swing] Fixer la taille des composants
    Par Imladir dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 05/02/2006, 08h53
  5. [netbeans][Interfaces] réglage taille des composants
    Par tsinapah dans le forum NetBeans
    Réponses: 3
    Dernier message: 22/04/2005, 19h11

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