2010-04-26 14 views
37

JPanel'imdeki tüm öğelerin sola hizalanmış olmasını istiyorum. Aşağıdaki şekilde bunu yapmaya çalışacağım: Sonuç Java gibiTüm elemanları JPanel'de sola nasıl hizalarım?

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

elemanın bir pozisyon olarak tüm unsurların sol tarafını kullanın ve sonra Jpanel merkezinde (değil sol kısmı) tüm unsurları koydu.

cevap

10

Sen değil onları sahip konteyner üzerinde, hizalamak istediğiniz bileşenleri üzerinde setAlignmentX(..) ..

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

Ben öyle düşünmüyorum. setAlignementX (Component.LEFT_ALIGNEMENT) ', öğenin sol tarafının öğeleri hizalamak için kullanılacağı anlamına gelir. Ve öğeler hala JPanel'in merkezine hizalanacak. – Roman

+1

Emin misin? Burada bir göz atın http://www.java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm panelin kendisine eklenen düğmelerde kullanılan metod setAlignmentX, panelin kendisinde değil – Jack

+1

Jack, bunun doğru yöntem düğmeler üzerinde kullanılır, ancak açıkladığınız etkiyi içermez. Düğmenin konumunu tanımlamaz. Hizalama için kullanılacak düğmenin parçasını tanımlar. Örneğin düğmenin "SOL" tarafı, düğmeyi ortada bırakmak için kullanılacaktır (düğmenin sol tarafı ortada olacak). – Roman

83

Ben FlowLayout kullanıyor soldaki nesneleri yerleştirmek için bulduk kolay yolu kullanmalıdır. Bu panele normal bir bileşen ekleyerek

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

BorderLayout yöntem olacaktır kullanmak sol

+1

+1 Benim için bir döküm gerekliydi: 'JPanel paneli = yeni JPanel ((LayoutManager) yeni FlowLayout (FlowLayout.LEFT)); – caw

+5

Döküm olsun veya olmasın, benim durumumda işe yaramadı. – theUg

0

sevdiğim yöntem üzerinde yerleştirecektir. Bileşenin girebileceği her konum için beş örnek aşağıda verilmiştir. Örnek, bileşenin bir düğme olması durumunda geçerlidir. Onu bir JPanel'e ekleyeceğiz, s. Düğmeye b denir.

//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); 

yazarak yanı içe unutmayın:

import java.awt.BorderLayout; 

Orada yönelim gibi şeyler karıştığı BorderLayout sınıftaki diğer yöntemler de vardır, ama eğer bu konuda kendi araştırma yapabilir Bunu merak ediyorsun. Umarım bu yardımcı oldu!