Ich benutze outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));
und füge dann der outputPanel
Elemente hinzu (zum Beispiel JLabels, JButtons). Zum Beispiel: outputPanel.add(submitButton);
.
Ich sehe, dass alle hinzugefügten Elemente "zentriert" sind. Es ist gut, weil ich möchte, dass meine Elemente in der Mitte sind. Wenn ich "center" schreibe, meine ich "gleichen Abstand von links und rechts". Das Problem ist jedoch, dass der linke Teil des Elements in die Mitte gelegt wird. Und ich möchte, dass die Mitte der Elemente in die Mitte gestellt wird. Wie kann ich dieses Verhalten bekommen?
Das Problem kann mit myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
gelöst werden. Es funktioniert mit JLabel
, JButton
und JRadioButton
.
Bisher die beste Methode, die mir begegnet ist und mit jedem Komponententyp funktioniert:
1. Erstelle ein neues JPanel:
JPanel helperPanel = new JPanel();
2. Fügen Sie die Komponente (in diesem Beispiel submitButton
) hinzu, die Sie horizontal zum JPanel zentrieren möchten:helperPanel.add(submitButton);
3. Fügen Sie das Bedienfeld zu Ihrem ursprünglichen Bedienfeld hinzu (das mit dem BoxLayout): outerPanel.add(helperPanel);
Das ist es! Sie könnten auch ein maximale Größe auf dem helperPanel
, wenn Sie nicht möchten, dass das BoxLayout des outerPanel
es erweitert.
Wenn Sie sich fragen, warum das so ist: Der implizite Layout-Manager eines JPanels ist FlowLayout, der Ihre Elemente automatisch zentriert.