Ответ 1
Проблема может быть решена с помощью myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
. Он работает с JLabel
, JButton
и JRadioButton
.
Я использую outputPanel.setLayout(new BoxLayout(outputPanel, BoxLayout.Y_AXIS));
, а затем добавляю элементы (например JLabels, JButtons) в outputPanel
. Например: outputPanel.add(submitButton);
.
Я вижу, что все добавленные элементы "центрированы". Это хорошо, потому что я хочу, чтобы мои элементы были в центре. Когда я пишу "центр", я имею в виду "равное расстояние слева и справа". Но проблема в том, что левая часть элемента помещается в центр. И я хочу, чтобы центр элементов был помещен в центр. Как я могу получить это поведение?
Проблема может быть решена с помощью myLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
. Он работает с JLabel
, JButton
и JRadioButton
.
Пока что лучший метод, с которым я столкнулся, работает с каждым типом компонента:
1. Создайте новый JPanel:
JPanel helperPanel = new JPanel();
2. Добавьте компонент (в этом примере submitButton
), который вы хотите центрировать по горизонтали в JPanel:
helperPanel.add(submitButton);
3. Добавьте панель к исходной панели (той, которая установлена в BoxLayout):
outerPanel.add(helperPanel);
Это!
Вы также можете установить максимальный размер на helperPanel
, если вы не хотите, чтобы BoxLayout из outerPanel
расширял его.
Если вам интересно, почему это работает: неявным менеджером компоновки JPanel является FlowLayout, который автоматически центрирует ваши элементы.