2010-04-26 21 views
37

Mi piacerebbe che tutti gli elementi nel mio JPanel siano allineati a sinistra. Io cerco di farlo nel modo seguente:Come posso allineare tutti gli elementi a sinistra in JPanel?

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

Come risultato Java utilizzare parte sinistra di tutti gli elementi in una posizione dell'elemento e poi mettere tutti gli elementi al centro (parte non a sinistra) del JPanel.

risposta

10

Si dovrebbe usare setAlignmentX(..) sui componenti da allineare, non sul contenitore che li ha ..

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

Io non la penso così. 'setAlignementX (Component.LEFT_ALIGNEMENT)' indica che il lato sinistro del componente verrà utilizzato per allineare gli elementi. E gli elementi saranno ancora allineati al centro di JPanel. – Roman

+1

Sei sicuro? Dai un'occhiata qui http://www.java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm il metodo setAlignmentX viene utilizzato sui pulsanti aggiunti al pannello, non sul pannello stesso – Jack

+1

Jack, hai ragione che questo il metodo è usato sui pulsanti ma non ha l'effetto che hai descritto. Non definisce la posizione del pulsante. Definisce la parte del pulsante che verrà utilizzata per l'allineamento. Ad esempio, il lato "SINISTRA" del pulsante verrà utilizzato per posizionare il pulsante al centro (il lato sinistro del pulsante verrà posizionato al centro). – Roman

83

Il modo più semplice che ho trovato per posizionare oggetti sulla sinistra sta utilizzando FlowLayout.

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

l'aggiunta di un componente normalmente a questo pannello si posizionarlo sul

+1

+1 Per me era necessario un cast: 'JPanel panel = new JPanel ((LayoutManager) new FlowLayout (FlowLayout.LEFT));' – caw

+5

Con o senza cast, non ha funzionato nel mio caso. – theUg

0

Il mio metodo preferito di sinistra di utilizzare sarebbe il metodo BorderLayout. Ecco i cinque esempi con ciascuna posizione in cui il componente potrebbe entrare. L'esempio è se il componente fosse un pulsante. Lo aggiungeremo a un JPanel, p. Il pulsante sarà chiamato 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); 

Non dimenticate di importarlo e digitando:

import java.awt.BorderLayout; 

Ci sono anche altri metodi nella classe BorderLayout coinvolge cose come l'orientamento, ma si può fare la propria ricerca su che se sei curioso di questo. Spero che questo abbia aiutato!

Problemi correlati