Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2639 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème disposition GridBagLayout

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème disposition GridBagLayout

n°1986180
Nargonath
Posté le 21-04-2010 à 11:05:16  profilanswer
 

Bonjour,
 
Tout d'abord, je suis en train de développer des JPanels avec un GridBagLayout. Je rencontre un problème au niveau de la disposition de mes cellules. J'ai compilé mon code étape par étape, et le problème provient de l'instruction que j'attribue à deux JLabels :
 
gridwidth = GridBagConstraints.REMAINDER;
 
En effet, voici le résultat que je désire et que j'obtiens en laissant la propriété à sa valeur par défaut :
http://uppix.net/7/5/0/ee8fd1a504f [...] 9b7987.jpg
Les traits de tableaux correspondent à la représentation de la grille virtuelle du GridBagLayout, ils sont juste là à titre représentatif.
 
Et voici ce que j'obtiens en passant la propriété des deux JLabels ( "Add SlowControl" et "Informations" ) à GridBagConstraints.REMAINDER :
http://uppix.net/7/c/e/b87c6ba383a [...] e2bc51.jpg
 
Je ne comprends pas pourquoi le fait de mettre cette valeur à la propriété écrase les cellules vides et donc me fait perdre l'indentation des JLabels recherchée. Si quelqu'un à une réponse à mon problème je suis tout ouï ! :D
 
Voici le code qui correspond à mon problème (les deux JLables en question sont lblAdd et lblInfoAdd) :  
Je ne sais pas si c'est ces balises là qu'il fallait utiliser pour le code ...  :)  
 

Code :
  1. // set preffered size and minimum size for all txt and but component  
  2.         this.cmbRunNameAdd.setPreferredSize(cmbRunNameAdd.getPreferredSize());
  3.         this.cmbRunNameAdd.setMinimumSize(new Dimension(100, 20));
  4.         this.txtDateAcqAdd.setPreferredSize(this.cmbRunNameAdd.getPreferredSize());
  5.         this.txtDateAcqAdd.setMinimumSize(this.cmbRunNameAdd.getMinimumSize());
  6.         this.txtNameAdd.setPreferredSize(this.cmbRunNameAdd.getPreferredSize());
  7.         this.txtNameAdd.setMinimumSize(this.cmbRunNameAdd.getMinimumSize());
  8.         this.txtPathAdd.setPreferredSize(this.cmbRunNameAdd.getPreferredSize());
  9.         this.txtPathAdd.setMinimumSize(this.cmbRunNameAdd.getMinimumSize());
  10.         // set constraints for lblAdd  
  11.         constraints(this.lblAdd, 0, 0, GridBagConstraints.REMAINDER, 1, GridBagConstraints.NONE,
  12.                 new Insets(10,15,0,0), GridBagConstraints.LINE_START, 0, 0);
  13.         // set constraints for lblInfoAdd  
  14.         constraints(this.lblInfoAdd, 1, 1, GridBagConstraints.REMAINDER, 1, GridBagConstraints.NONE,
  15.                 new Insets(10,15,0,0), GridBagConstraints.LINE_START, 0, 0);
  16.         // set constraints for lblNameAdd  
  17.         constraints(this.lblNameAdd, 2, 2, 1, 1, GridBagConstraints.NONE, new Insets(10,15,0,0),
  18.                 GridBagConstraints.LINE_START, 0, 0);
  19.         // set constraints for txtNameAdd  
  20.         // we use the GridBagContraints.RELATIVE property to set gridx. It means that gridx take  
  21.         // care about the previous gridx element position. It will be incremented.  
  22.         constraints(this.txtNameAdd, GridBagConstraints.RELATIVE, 2, 1, 1,
  23.                 GridBagConstraints.HORIZONTAL, new Insets(10,5,0,0), GridBagConstraints.BASELINE,
  24.                 0, 0);
  25.         // set constraints for lblPathAdd  
  26.         // we have to disable the fill option  
  27.         constraints(this.lblPathAdd, GridBagConstraints.RELATIVE, 2, 1, 1,
  28.                 GridBagConstraints.NONE, new Insets(10,10,0,0), GridBagConstraints.BASELINE_LEADING,
  29.                 0, 0);
  30.         // set constraints for txtPathAdd  
  31.         constraints(this.txtPathAdd, GridBagConstraints.RELATIVE, 2, 1, 1,
  32.                 GridBagConstraints.HORIZONTAL, new Insets(10,5,0,0), GridBagConstraints.BASELINE,
  33.                 0, 0);
  34.         // set constraints for lblRunNameAdd  
  35.         constraints(this.lblRunNameAdd, 2, 3, 1, 1,
  36.                 GridBagConstraints.NONE, new Insets(10,15,0,0), GridBagConstraints.BASELINE_LEADING,
  37.                 0, 0);
  38.         // set constraints for cmbRunNameAdd  
  39.         constraints(this.cmbRunNameAdd, GridBagConstraints.RELATIVE, 3, 1, 1,
  40.                 GridBagConstraints.HORIZONTAL, new Insets(10,5,0,0), GridBagConstraints.BASELINE,
  41.                 0, 0);
  42.         // set constraints for lblDateAcqAdd  
  43.         constraints(this.lblDateAcqAdd, GridBagConstraints.RELATIVE, 3, 1, 1,
  44.                 GridBagConstraints.NONE, new Insets(10,10,0,0), GridBagConstraints.BASELINE_LEADING,
  45.                 0, 0);
  46.         // set constraints for txtDateAcqAdd  
  47.         constraints(this.txtDateAcqAdd, GridBagConstraints.RELATIVE, 3, 1, 1,
  48.                 GridBagConstraints.HORIZONTAL, new Insets(10,5,0,0), GridBagConstraints.BASELINE,
  49.                 0, 0);
  50.        
  51.     }
  52.     /**  
  53.      * Add a component to the GridBagLayout with all constraints given into parameters  
  54.      * @param object  
  55.      * @param gridx  
  56.      * @param gridy  
  57.      * @param gridwidth  
  58.      * @param gridheight  
  59.      * @param fill  
  60.      * @param insets  
  61.      * @param anchor  
  62.      * @param weightx  
  63.      * @param weighty  
  64.      */
  65.     private void constraints(Component object, int gridx, int gridy,
  66.             int gridwidth, int gridheight, int fill, Insets insets, int anchor, double weightx,
  67.             double weighty) {
  68.         gbc.gridx = gridx;
  69.         gbc.gridy = gridy;
  70.         gbc.gridwidth = gridwidth;
  71.         gbc.gridheight = gridheight;
  72.         gbc.fill = fill;
  73.         gbc.insets = insets;
  74.         gbc.anchor = anchor;
  75.         gbc.weightx = weightx;
  76.         gbc.weighty = weighty;
  77.         this.add(object, gbc);
  78.     }

mood
Publicité
Posté le 21-04-2010 à 11:05:16  profilanswer
 

n°1986219
pour_lespu​bs
Posté le 21-04-2010 à 11:59:13  profilanswer
 

franchement laisse tomber le gridbaglayout c'est trop compliqué.  :fou:  
Utilises plutot le tablelayout. Il est plus simple. Je l'ai appris en - d'un jour :sweat: . Il est moins prise de gueule, bc plus logique et plus stable.  
 
après tu fais ce que tu veux...
 :hello:


---------------
[Achat/vente jeux]  - [ancien feedback]
n°1986306
Nargonath
Posté le 21-04-2010 à 14:23:55  profilanswer
 

Bah je sais pas je le trouve assez intéressant. Et pour ce qui est de la difficulté, j'ai fais le tuto de chez developpez.com (http://bbclone.developpez.com/fr/java/tutoriels/uiswing/gridbaglayout/?page=page_sommaire) qui est, je trouve, très clair.
Pour l'instant tout marche comme je veux, j'avais juste un incompris sur cette propriété quoi :) Mais merci de ta réponse, je me pencherais plus sur ton layout si je bloque vraiment avec le gridBagLayout ^^

n°1986317
Deamon
Posté le 21-04-2010 à 14:34:02  profilanswer
 

pour_lespubs a écrit :

franchement laisse tomber le gridbaglayout c'est trop compliqué.  :fou:  
Utilises plutot le tablelayout. Il est plus simple. Je l'ai appris en - d'un jour :sweat: . Il est moins prise de gueule, bc plus logique et plus stable.  
 
après tu fais ce que tu veux...
 :hello:


Le GridBagLayout n'est pas compliqué si tu utilises ces classes : http://louis.cova.neuf.fr/blocs-notes/page11.html
Ca simplifie grandement la chose et tu fais ce que tu veux avec après.

n°1986362
Nargonath
Posté le 21-04-2010 à 16:56:15  profilanswer
 

Citation :

Remaider est calculé pour prendre tout l'espace restant sur la ligne. Donc si ta ligne fait trois colonnes et si tu places ton composant en première colonne avec un gridwidth en REMAINDER, ton composant aura à disposition les trois colonnes. De fait le GridBag choisit d'étendre au max les colonnes contenant des composants qui ont un gridwidth de 1, c'est à dire les deux dernières dans ton cas.


 
Voilà j'ai trouvé la réponse à ma question :D


Message édité par Nargonath le 21-04-2010 à 17:00:24
n°1986512
pour_lespu​bs
Posté le 22-04-2010 à 10:22:31  profilanswer
 

Deamon a écrit :


Le GridBagLayout n'est pas compliqué si tu utilises ces classes : http://louis.cova.neuf.fr/blocs-notes/page11.html
Ca simplifie grandement la chose et tu fais ce que tu veux avec après.


oui,
mais si tu dois encore ajouter des classes pour arriver à faire ce que tu veux de manière "stable", autant prendre une librairie simple pour faire le travail.
GridBagLayout est super puissant et compliqué. Dès que tu modifies un param ca peut impacter tout le rendu  :heink: . Tu as vu le code que tu dois taper?  
 
Je suis un mauvais développeur : je cherche la simplicité  :lol: et je n'aime pas les choses compliquées  :ouch: .
 
bon oki --> je sors et bon courage pour tes devs...
 :hello:


---------------
[Achat/vente jeux]  - [ancien feedback]
n°1986523
Deamon
Posté le 22-04-2010 à 10:30:28  profilanswer
 

pour_lespubs a écrit :

mais si tu dois encore ajouter des classes pour arriver à faire ce que tu veux de manière "stable", autant prendre une librairie simple pour faire le travail.
GridBagLayout est super puissant et compliqué. Dès que tu modifies un param ca peut impacter tout le rendu  :heink: .


Ces 2 petites classes ne sont pas là pour voir un truc stable mais un truc simplifié justement. Et c'est pas la mort d'ajouter ces 2 classes dans un projet.

 

Et un param qui ne modifie rien c'est qu'il ne sert à rien donc normal que ça impacte le rendu.  :D


Message édité par Deamon le 22-04-2010 à 10:30:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème disposition GridBagLayout

 

Sujets relatifs
Problème formulaireProblème Flash et IE
[resolu] Probleme de syntaxe dans un UPDATEProblème de base de données Access
Problème avec des tableaux[c#] Petit probléme lors de l'affichage d'une boite de dialogue?
Maven probleme de version ?Panne du système de login sur un forum phpbb
Problème Java (Unknow Source)[BATCH] creation de repertoires par parcours de fichier texte
Plus de sujets relatifs à : Problème disposition GridBagLayout


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR