Как центрировать элементы в BoxLayout, используя центр элемента? - PullRequest
27 голосов
/ 01 апреля 2010

Я использую outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));, а затем добавляю элементы (например, JLabels, JButtons) к outputPanel. Например: outputPanel.add(submitButton);.

Я вижу, что все добавленные элементы "центрированы". Это хорошо, потому что я хочу, чтобы мои элементы были в центре. Когда я пишу «центр», я имею в виду «равное расстояние слева и справа». Но проблема в том, что левая часть элемента помещена в центр. И я хочу, чтобы центр элементов был помещен в центр. Как я могу получить это поведение?

Ответы [ 2 ]

45 голосов
/ 01 апреля 2010

Проблема может быть решена с помощью myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);. Работает с JLabel, JButton и JRadioButton.

0 голосов
/ 10 декабря 2017

Пока что лучший метод, с которым я столкнулся, работает с каждым типом компонента:
1. Создайте новый JPanel :

JPanel helperPanel = new JPanel();

2. Добавьте компонент (в этом примере submitButton), который вы хотите центрировать по горизонтали к JPanel:
helperPanel.add(submitButton);

3. Добавьте панель на исходную панель(тот, что с BoxLayout): outerPanel.add(helperPanel);

Вот и все!Вы также можете установить максимальный размер на helperPanel, если не хотите, чтобы BoxLayout outerPanel расширял его.
Если вам интересно, почему это работает: неявная компоновкаМенеджер JPanel - FlowLayout, который автоматически центрирует ваши элементы.

...