2010-04-26 7 views
37

Ich möchte alle Elemente in meinem JPanel nach links ausgerichtet haben. Ich versuche, es in der folgenden Art und Weise zu tun:Wie kann ich alle Elemente in JPanel nach links ausrichten?

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

Als Ergebnis Java linke Seite aller Elemente als Position des Elements verwendet und dann alle Elemente in dem Mittelpunkt stellt (nicht linker Teil) des JPanel.

Antwort

10

sollten Sie setAlignmentX(..) auf Komponenten verwenden Sie ausrichten möchten, nicht auf dem Behälter, die sie zur Verfügung stehen ..

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

Ich glaube nicht. 'setAlignementX (Component.LEFT_ALIGNEMENT)' bedeutet, dass die linke Seite der Komponente zum Ausrichten von Elementen verwendet wird. Und Elemente werden immer noch auf das Zentrum von JPanel ausgerichtet sein. – Roman

+1

Sind Sie sicher? Werfen Sie einen Blick hier http://www.java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm Die Methode setAlignmentX wird auf Schaltflächen verwendet, die zum Panel, nicht auf dem Panel selbst – Jack

+1

Jack, du hast Recht, dass dies Methode wird auf Schaltflächen verwendet, hat jedoch nicht den von Ihnen beschriebenen Effekt. Es definiert nicht die Position der Schaltfläche. Es definiert den Teil der Schaltfläche, der für die Ausrichtung verwendet wird. Zum Beispiel wird die "LINKE" Seite des Knopfes benutzt, um den Knopf in die Mitte zu legen (die linke Seite des Knopfes wird in die Mitte gelegt). – Roman

83

Der einfachste Weg, den ich gefunden habe Objekte auf der linken Seite platzieren Flowlayout verwendet.

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

Hinzufügen einer Komponente normal zu dieser Platte wird es Platz auf der linken Seite

+1

+1 Für mich war ein Cast notwendig: 'JPanel panel = neues JPanel ((LayoutManager) neues FlowLayout (FlowLayout.LEFT));' – caw

+5

Mit oder ohne Cast funktionierte es in meinem Fall nicht. – theUg

0

Meine bevorzugte Methode wäre die Verwendung der Border Methode. Hier sind die fünf Beispiele für jede Position, in die die Komponente gehen könnte. Das Beispiel ist, wenn die Komponente eine Schaltfläche wäre. Wir werden es zu einem JPanel hinzufügen, p. Die Schaltfläche wird b genannt.

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

Vergessen Sie nicht, es auch zu importieren, indem Sie Folgendes eingeben:

import java.awt.BorderLayout; 

auch andere Methoden in der Klasse Border Es gibt Dinge, wie Orientierung beteiligt, aber Sie können sich Ihre eigene Forschung tun, wenn du bist neugierig darauf. Ich hoffe das hat geholfen!