2012-08-02 5 views
2

Existe-t-il un moyen de définir, lors de la spécification de la hauteur et de la largeur d'un composant dans Swing, qu'un objet donné doit remplir l'espace vertical/horizontal disponible? C'est à dire. Je voudrais dire setSize(*, 100) pour permettre le remplissage horizontal.Java swing - taille de remplissage

+0

essayer d'obtenir la largeur de parent avec this.getParent(). GetWidth() ou getHeight() respectivement. Cependant, cela peut ne pas fonctionner si vous appelez pack(). Donc peut-être envisager d'ajouter du code et de nous montrer ce que vous faites – peshkira

+0

Y a-t-il une raison pour laquelle vous utilisez 'setSize()' et non 'setPreferredSize()' avec un LayoutManager? – James

+0

Je ne sais pas quelle est la bonne approche. Comment feriez-vous cela avec un gestionnaire de disposition? – Bober02

Répondre

3

Vous pouvez appeler setSize avec tout ce que vous voulez, mais à la fin il est le LayoutManager du parent Container qui décide quelle position et quelle taille chaque composant obtient. Donc en utilisant le LayoutManager correct, vous pouvez généralement réussir à laisser un composant prendre toute la largeur disponible. Comme vous pouvez le voir dans la partie BorderLayout du tutoriel Visual guide to LayoutManagers les PAGE_START et PAGE_END prennent toute la largeur disponible.

En spécifiant la hauteur que la taille préférée vous obtiendrez le résultat souhaité

0

A BorderLayout est probablement ce que vous voulez utiliser, il vous permet de définir les composants au Nord, Ouest, Sud, Est et au centre.

Pour le remplissage horizontal, utiliser NORTH, pour le remplissage vertical WEST et pour les deux CENTER.

+0

OK, mais comment puis-je définir la hauteur du bouton, quand je l'ai mis au Sud, sans spécifier la largeur? – Bober02

+1

@ Bober02 lorsqu'il s'agit de gestionnaires de disposition, vous ne pouvez fournir que des "astuces". Dans cet exemple, vous donneriez la taille préférée du bouton que vous vouliez (sans trop vous soucier de la largeur). BorderLayout fera ensuite le bouton remplir la largeur horizontale du conteneur. – MadProgrammer

+0

Bon conseil, merci beaucoup – Bober02