Votre question

[java - interface] le panel - position de composants

Tags :
  • Java
  • Programmation
Dernière réponse : dans Programmation
20 Avril 2006 11:03:39

Salut,

J'ai une JFrame (ma fenetre) avec un layout de type BorderLayout. Je place à l'interieur a gauche ("WEST"), un panel de type GridBagLayout contenant (pour l'instant) de simple bouton l'un en dessous de l'autre.

Comment faire pour que l'ensemble des composants du GridBagLayout soit positionné en haut (j'ai essayé la contrainte anchor avec north mais ca ne marche pas) ?

Le probleme, c'est que mes boutons ne remplissant pas tout l'espace en hauteur dédié par la JFrame, ils se retrouvent au milieu.

(la fenetre est une fenetre option avec a gauche la liste des differents boutons et a droite, le contenu du panel correspondant au bouton que l'on a cliquer)

Voici un apercu de mon interface :
(en gris, la couleur de fond de mon panel gridbaglayout, il occupe donc tout l'espace qui lui est dedié)


Merci d'avance
a+

Autres pages sur : java interface panel position composants

21 Avril 2006 10:00:53

J'ai contourné le probleme comme ceci :

J'ai mis mon panel (panelGBL) de layout gridbaglayout dans un panel (panelBL2) de layout borderlayout. le panelGBL est placé dans panelBL2 au Nord. Enfin mon panelBL2 est placé dans ma JFrame a gauche.

a+
21 Avril 2006 12:02:45

J'ai encore quelques soucis :

Dans la partie droite de ma JFrame, mon panel n'est pas aussi grand que l'espace qui lui ai dedié. je pourrais mettre un setSize a mon panel mais comment connaitre les dimensions de l'espace que mon panel peut remplir ?

Mon second probleme est que je souhaiterais que le texte de mon label titre soit centré......si j'applique un fill="horizontal" au label lors de l'ajout, le texte n'est pas centré, bien que le fond remplisse entierement l'espace qui lui ai dedié (ce qui ai voulu) mais comme dit precedemment, le fond n'occupe pas tout l'espace dedié (il occupe tout l'espace du panel gridbaglayout).

Pour centrer le texte, j'ai essayé monLabel.setAlignmentX(JComponent.CENTER_ALIGNMENT); mais ca ne marche pas.

Deux screens :
Image 1
Image 2

Je suis également aller sur cette page pour le texte :
Une page infos-du-net
Mais n'y a t-il pas plus simple ?

merci a+
Contenus similaires
a b L Programmation
21 Avril 2006 20:06:57

Pour le Label, il y a une méthode spécifique au label, car en fait ton label est suffisamment grand (avec le fill), c'est le texte du label qui n'est pas aligné. Essaie:
  1. monLabel.setHorizontalAlignment(CENTER);

21 Avril 2006 21:30:20

ok merci.

je peux pas testé maintenant mais a mon avis ca va marcher ;-)

J'etais pas loin tout de meme, setAlignmentX - setHorizontalAlignment :-D

merci beaucoup, je testerais ca lundi

a+
24 Avril 2006 10:06:50

Pour l'alignement du label, ca marche, c bon merci.

Mais j'ai encore deux soucis, apres j'espere que ca sera bon lol !

Le premier concerne la panel qui n'occupe pas tout l'emplacement qu'il pourrait occupé.

Le deuxieme concerne mes boutons dont leur "case" dedié est de taille non égal. (le dernier a une case plus grande). Pour me visualiser, j'ai mis l'option BOTH du gridbaglayout pout les boutons.

Un screenshot

Merci d'avance
a+
a b L Programmation
24 Avril 2006 13:12:49

AS-tu mis un layout sur le parent du panel ? Je rappelle que pour l'élément racine JFrame, il y a la méthode setLayout() à utiliser avec le setRootPane().
pour les boutons, fixe les tailles avec setMaximumSize() et setPreferredSize() et mets des éléments vides:
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html#space
L'exemple en lien montre l'utilisation de Box pour mettre un élément invisible, c'est mieux qu'un panel car il ne se réaffiche pas.
24 Avril 2006 18:21:26

Ok merci ;) 

Je vais regarder tout ca demain.
J'ai bien mis des setLayout partout (mon JFrame est en BorderLayout)

a+
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS