salut à tous
pouvez vous me dire quels sont les layouts qu'on peu utiliser et dont on peu maipuler facilement le positionnement et les dimensions pour construire une interface graphique
salut à tous
pouvez vous me dire quels sont les layouts qu'on peu utiliser et dont on peu maipuler facilement le positionnement et les dimensions pour construire une interface graphique
Salut,
tu as la FAQ GUI qui te donne pas mal de détails déjà...
Les tutos de chez Sun également...
Et puis en faisant une petite recherche sur le forum tu devrais aussi trouver ton bonheur.
je suis deja passé par faq java avant de poser ma question mais il y a pas grand chose et le probleme lses tuto de sun c'est k'ils sont en anglais.la maintenant je suis sur le site de sun et a propos c'est quoi l'utulité(en bref) de GridBagLayout.
merci d'avance
L'utilité du GridBagLayout, c'est que c'est un layout organisé en tableau qui peut tout faire. Tu peut complexifier énormémement ton interface avec ce layout et faire tout ce que tu veux. Néanmoins, le revers de la médaille, c'est qu'il n'est pas facile à utiliser.
salut à tous
oui c'est encore moi ,j'arrive pas à comprendre le fonctionnement d'un GridBagLayout.ma classe est la suivante:
ce que je comprends pas c'est que meme si je change le gridX ou le weightY le resultat est toujour le meme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 private Container getContainer(){ container = getContentPane(); container.setLayout(new GridBagLayout()) ; c = new GridBagConstraints(); boutonStock=new JButton("Stock") ; boutonVente=new JButton("Vente") ; c.insets = new Insets(2, 2, 2, 2); c.weighty = 1.0; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; c.gridheight = 2; // span across 2 rows container.add(boutonStock,c) ; c.gridx = 200; c.gridheight = 100; // set back to 1 row c.gridwidth = 100; // span across 2 columns container.add(boutonVente, c); }
comment peut on gérer la position et les dimension d'un bouton dans un gridBagLayout.
j'ai vraiment besoin de votre aideet merci d'avance.
IL faut fouille un peu plus dans les attributs des GridBagConstraints:
anchor pour le positionnnement, fill pour remplissage ou pas (si fill est à GridBagConstraint.NONE alors la taille est la prefferedSize du bouton, sinon le bouton remplis en vertical et/ou en horizontal selon la valeur de l'attribut fill)
envoi moi un dessin de ce que tu veut faire avec un GridBagLayout et je te le fais si tu veux? (bbclone@gmail.com)
pour repondre a tes question:
les gridx et gridy ne changent pas la taille. il positionne ton Component dans une cellule de ta grille virtuelle. si tu veux donner une taille a tes composant tu dois mettre un preferedSize (je te conseille de mettre un minimumSize aussi).
weightX et weighty peuvent dans certains cas faire varier la taille d'un composant. si le composant a un fill sur Horizontal/Vertical ou BOTH, ca peut faire grandir ton composant a la taille qui lui reste. (en fonction de la valeur de weightx/y).
c'est vrai que tu peut aussi jouer sur la taille des composant avec les parametre padding de ta GBConstraints mais je te deconseille d'utiliser du size padding ;-)
oui, le grid bag layout est bon conteneur car il permet de faire toutes les mises en page (une fois qu'on a bien saisi le principe, je ne m'attarde pas la dessus de tres bons tutos sont là pour ca). L'inconvenient a mon sens c'est qu'il n'est pas tres évolutif: une fois la frame dessinée pour y placer tes composant, en ajouter un nouveau chamboule tout...Une bonne doc papier s'impose donc!
Ma petite participation pour gérer le constraints :
Grace a cette petite methode tu peut facilement gerer les contraintes plutot que de les definir une par une.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 protected void buildConstraints(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy){ gbc.gridx=gx;//Colonne X gbc.gridy=gy;//Ligne Y gbc.gridwidth=gw;//Nbre de colonnes de large gbc.gridheight=gh;//Nbre de ligne de haut gbc.weightx=wx;//Largeur colonnes gbc.weighty=wy;//Hauteur lignes }
Exemple:
La petite astuce (que je me permet de préciser au cas ou) c'est que tu utilise un seul GridBagConstraints donc si tu modifie une de ses propriétés pour l'un des composants (ex: .anchor ou .fill) cette propriété resttera active la prochaine fois que tu utilisera ton GridBagConstraints alors pense a les écraser systematiquement si tu en modifie...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 gridBag = new GridBagLayout(); gbConstraints=new GridBagConstraints(); MonPanel= new JPanel(); MonPanel.setLayout(gridBag); setContentPane(MonPanel); //Y a plus qu'a ajouter les composants dans le constructeur buildConstraints(gbConstraints, 0, 2, 1, 1, 0, H2); //En une ligne s-y-ouplait! gridBag.setConstraints(monComposant, gbConstraints); MonPanel.add(monComposant);
ce que j'arrive pas à comprendre c'est que pourquoi quand je change le gridX et le gridY il se passe rien le bouton reste toujours a sa place,ca fait une semaine que travailles la dessus sans succès
Le gridx et le gridy servent à placer les composants contenus dans ton gridbag les uns par rapport aux autres.
C'est comme les tables HTML (sauf qu'utiliser les tables pour faire du pacement en HTML c'est mmmmmmmmmmaaaaaaaaaaaaaallllllllllllllllll)
si tu fais du
ton image sera placée à gauche même si il y a une colonne avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <table> <tr> <td></td><td><img ...></img></td> </tr> <tr> <td></td><td></td> </tr>
Le GridBag ça marche pareil.
Essaies de comprendre ensuite à quoi servent les autres éléments des GridBagConstraints....
Je viens de voir ton mail je te remercie je vais l'essayer a+.
merci à tous ceux qui m'ont repondu
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager