2010-03-26 15 views
3

J'utilise swing pour créer mon interface graphique. J'ai un JFrame contenant un JPanel principal qui, à son tour, contient plusieurs JPanels qui, à leur tour, contiennent des boutons.Quelle est la bonne façon de définir la taille des éléments de l'interface graphique?

Je voudrais régler certaines tailles sur les boutons mu et JPanels. Comment ça marche? Dois-je définir les tailles de mes boutons et ensuite la taille du JPanel et du JFrame sera définie en fonction de la taille des boutons? Ou cela fonctionne dans la direction opposée? Je fixe la taille pour le JPanel et la taille des boutons sera réglée automatiquement?

AJOUTÉE:

J'utilisé fieldPanel.setPreferredSize(new Dimension(100,100)); et il n'a eu aucun effet sur l'apparence de la fenêtre. Peut-il être parce que ce panneau est dans le "milieu de la hiérarchie" il contient des boutons et il est contenu par d'autres JPanels?

+1

utilisez JFrame.pack si vous utilisez la taille préférée pour vos panneaux –

+0

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html – Nate

Répondre

3

Cela dépend du gestionnaire de disposition que vous utilisez. Certains, comme GridLayout ne fait pas attention à la taille que vous définissez mais applique plutôt les règles du gestionnaire de disposition lui-même.

D'autres, comme GridBagLayout, vous permettent de mieux contrôler la taille des composants.

+0

Oui, j'ai le GridLayout. Donc, maintenant je sais pourquoi ça n'a pas marché. Dans la grille j'ai des boutons. Peut-être que je peux définir leur taille explicitement et, de cette façon, définir la taille de la JPanel? – Roman

+0

Si la taille des boutons est importante, je recommande d'utiliser un autre gestionnaire de disposition. Ou vous pouvez mettre le bouton dans un JPanel et mettre le JPanel dans le conteneur GridLayout. Ensuite, le JPanel dans lequel réside le bouton peut recevoir une disposition de flux qui n'affecte pas la taille du bouton, de sorte que vous obtiendrez le bouton de la taille de votre choix. Cependant, c'est une approche maladroite qui ne vous donnerait pas beaucoup de contrôle sur la mise en page de votre interface graphique. –