webentwicklung-frage-antwort-db.com.de

Wie zentriere ich Elemente im BoxLayout mit der Mitte des Elements?

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?

25
Roman

Das Problem kann mit myLabel.setAlignmentX(Component.CENTER_ALIGNMENT); gelöst werden. Es funktioniert mit JLabel, JButton und JRadioButton.

43
Roman

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.

0
AdamK