2010-04-26 24 views
37

Chciałbym, aby wszystkie elementy w moim JPanelu były wyrównane do lewej. Staram się zrobić to w następujący sposób:Jak mogę wyrównać wszystkie elementy w lewo w JPanel?

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

W efekcie Java używać lewej strony wszystkich elementów jako położenia elementu, a następnie umieścić wszystkie elementy w środku (nie lewej części) na JPanel.

Odpowiedz

10

Należy użyć setAlignmentX(..) na komponenty, które chcesz wyrównać, a nie na pojemniku, który je ma ..

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

Nie sądzę. 'setAlignementX (Component.LEFT_ALIGNEMENT)' oznacza, że ​​lewa strona komponentu będzie używana do wyrównania elementów. Elementy będą nadal dostosowane do centrum JPanel. – Roman

+1

Czy jesteś pewien? Zajrzyj tutaj http://www.java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm metoda setAlignmentX jest używana na przyciskach dodanych do panelu, a nie na samym panelu – Jack

+1

Jack, masz rację, że to Metoda jest używana na przyciskach, ale nie ma efektu, który opisałeś. Nie określa położenia przycisku. Określa część przycisku, który będzie używany do wyrównania. Na przykład przycisk "LEWY" przycisku zostanie użyty do umieszczenia przycisku w środku (lewa strona przycisku zostanie umieszczona w środku). – Roman

83

Najprostszym sposobem znalazłem się kłaść żadnych przedmiotów na lewo korzysta FlowLayout.

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

dodanie składnika normalnie do tego panelu będzie umieścić go na lewym

+1

+1 Dla mnie wymagana była obsada: 'Panel JPanel = nowy JPanel ((LayoutManager) nowy FlowLayout (FlowLayout.LEFT));' – caw

+5

Z lub bez obsady, nie działało w moim przypadku. – theUg

0

Moja ulubiona metoda, byłaby metoda BorderLayout. Oto pięć przykładów z każdą pozycją, do której komponent mógłby wejść. Przykład dotyczy tego, czy komponent był przyciskiem. Dodamy go do JPanel, str. Przycisk będzie oznaczony jako 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); 

Nie zapomnij go importować, a także przez wpisanie:

import java.awt.BorderLayout; 

Istnieją również inne metody w klasie BorderLayout udziałem rzeczy takie jak orientacja, ale można zrobić własne badania na ten temat, jeśli Ciekawi cię to. Mam nadzieję, że to pomogło!

Powiązane problemy