2010-04-26 19 views
37

Je voudrais que tous les éléments de mon JPanel soient alignés à gauche. J'essaie de le faire de la manière suivante:Comment puis-je aligner tous les éléments à gauche dans JPanel?

JPanel panel = new JPanel(); 
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
panel.setAlignmentX(Component.LEFT_ALIGNMENT); 

En conséquence Java utilisent le côté gauche de tous les éléments en position de l'élément, puis mettre tous les éléments du centre (partie non gauche) du JPanel.

Répondre

10

Vous devez utiliser setAlignmentX(..) sur les composants que vous souhaitez aligner, et non sur le récipient qui les a ..

JPanel panel = new JPanel(); 
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
panel.add(c1); 
panel.add(c2); 

c1.setAlignmentX(Component.LEFT_ALIGNMENT); 
c2.setAlignmentX(Component.LEFT_ALIGNMENT); 
+5

Je ne pense pas. 'setAlignementX (Component.LEFT_ALIGNEMENT)' signifie que le côté gauche du composant sera utilisé pour aligner les éléments. Et les éléments seront toujours alignés au centre de JPanel. – Roman

+1

Etes-vous sûr? Jetez un oeil ici http://www.java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm la méthode setAlignmentX est utilisé sur les boutons ajoutés au panneau, pas sur le panneau lui-même – Jack

+1

Jack, vous avez raison que cette La méthode est utilisée sur les boutons mais n'a pas l'effet que vous avez décrit. Il ne définit pas la position du bouton. Il définit la partie du bouton qui sera utilisée pour l'alignement. Par exemple, le côté "GAUCHE" du bouton sera utilisé pour mettre le bouton au centre (le côté gauche du bouton sera placé au centre). – Roman

83

La meilleure façon que j'ai trouvé de placer des objets sur la gauche est à l'aide FlowLayout.

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 

ajout d'un composant normalement à ce panneau se placer sur la gauche

+1

+1 Pour moi, une conversion était nécessaire: 'JPanel panel = new JPanel ((LayoutManager) nouveau FlowLayout (FlowLayout.LEFT));' – caw

+5

Avec ou sans cast, cela n'a pas fonctionné dans mon cas. – theUg

0

Ma méthode préférée à utiliser serait la méthode BorderLayout. Voici les cinq exemples avec chaque position que le composant pourrait entrer. L'exemple est pour si le composant était un bouton. Nous allons l'ajouter à un JPanel, p. Le bouton s'appellera b.

//To align it to the left 
p.add(b, BorderLayout.WEST); 

//To align it to the right 
p.add(b, BorderLayout.EAST); 

//To align it at the top 
p.add(b, BorderLayout.NORTH); 

//To align it to the bottom 
p.add(b, BorderLayout.SOUTH); 

//To align it to the center 
p.add(b, BorderLayout.CENTER); 

Ne pas oublier d'importer aussi bien en tapant:

import java.awt.BorderLayout; 

Il y a aussi d'autres méthodes dans la classe BorderLayout impliquant des choses telles que l'orientation, mais vous pouvez faire vos propres recherches sur que si vous êtes curieux à ce sujet. J'espère que cela a aidé!