#java #swing #radio-button #alignment #jpanel
#java #swing #переключатель #выравнивание #jpanel
Вопрос:
Я хочу центрировать свои радиокнопки на панели, но когда я центрирую, они центрируются в соответствии с длиной текста кнопки, так что да, они центрированы, но не выровнены друг с другом и выглядят очень некрасиво. Как я могу исправить свой код?
radioButtonMenuPanel = new JPanel();
radioButtonMenuPanel.setLayout(new BoxLayout(radioButtonMenuPanel,
BoxLayout.PAGE_AXIS));
ButtonGroup group = new ButtonGroup();
for (String item : answerItems) {
JRadioButton radioButton = new JRadioButton(item);
radioButton.setAlignmentX(Component.Center_ALIGNMENT);
radioButtonMenuPanel.add(radioButton);
group.add(radioButton);
}
Ответ №1:
Вы всегда можете использовать GridBagLayout. Используя этот макет, вы можете привязать компонент к сетке с любой стороны ячейки.
radioButtonMenuPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = GridBagConstraints.RELATIVE;
gbc.anchor = GridBagConstraints.WEST;
ButtonGroup group = new ButtonGroup();
for (String item : answerItems) {
JRadioButton radioButton = new JRadioButton(item);
group.add(radioButton);
radioButtonMenuPanel.add(radioButton, gbc);
}
Что-то подобное должно сработать. По умолчанию a GridBagLayout
центрирует компонент на экране в виде небольшой сетки. В этом случае мы просто закрепляем компонент в ячейке к западу, где компонент будет помещен в первый столбец (gridx = 0), и для каждой переключающей кнопки он будет располагаться рядом с последним компонентом.
Надеюсь, это помогло!
Ответ №2:
Как насчет выравнивания кнопок по левому краю на отдельной панели, а затем центрирования этой панели на другой панели.