Вы добавляете cancelButton на панель, используя константу BorderLayout.SOUTH:
panel.add(cancelButton, BorderLayout.SOUTH);
Но где вы устанавливаете макет панели как BorderLayout?Поскольку вы никогда не устанавливаете макет этого контейнера, он будет использовать макет по умолчанию для JPanel, который является FlowLayout.
Решение: установите макет панели JPanel на BorderLayout, чтобы получить поведение BorderLayout.
Как только вы это решите,у вас будет другая проблема:
for (String text : options) {
JRadioButton option = new JRadioButton(text);
option.setActionCommand(text);
group.add(option);
panel.add(option);
}
Вы добавляете JRadioButton к той же панели JPanel, независимо от макета.Я подозреваю, что вы хотите добавить JRadioButtons к своей собственной JPanel, вероятно, которая использует GridLayout(1, 0)
или GridLayout(0, 1)
, в зависимости от желаемой ориентации, и затем вы хотите добавить эту JPanel на панель, возможно, в позиции BorderLayout.CENTER..
Также у вас есть похожая проблема с вашим okButton в том, что вы добавляете его на панель независимо от макета.