Использовать макет Spring For Hand GUI

У меня есть фрейм с меткой и двумя радиокнопками.

Я использую весенний макет, но мой второй переключатель RadioButton виден в левом верхнем углу страницы!

public class tester extends JFrame {

public tester() {
    add(create());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 500);
    setVisible(true);
}

public JPanel create() {
    JPanel panel = new JPanel();
    ButtonGroup group = new ButtonGroup();
    JRadioButton r1 = new JRadioButton("Yes");
    JRadioButton r2 = new JRadioButton("No");
    group.add(r1);
    group.add(r2);
    JLabel lable = new JLabel("Today is sunday?");
    panel.add(lable);
//        panel.add(group);      // How add this?

    panel.add(r1);
    panel.add(r2);

    JButton savebt= new JButton("Save");
    JButton cancelbt=new JButton("Cancell");
    panel.add(savebt);
    panel.add(cancelbt);

    panel.setLayout(new SpringLayout());
    SpringUtilities.makeCompactGrid(panel, 1, 3, 50, 100, 25, 50);
    return panel;
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new tester();
        }
    });
}
}

Теперь это исключение происходит:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 5

Я хочу отобразить мои две кнопки внизу строки переключателя!

1 ответ

Решение

На вашей панели три элемента, поэтому количество столбцов должно быть 3:

SpringUtilities.makeCompactGrid(panel, 1, 3, 50, 100, 25, 50);

// panel.add (group); // Как добавить это?

Тебе это не нужно. Группы кнопок не добавляются на панель. Они предназначены для управления выбором кнопок и не отображаются.

Другие вопросы по тегам