Очистить выбор радиокнопок

Мое приложение: пользователь хочет, чтобы объект двигался влево с определенной скоростью - он выбирает одну радиокнопку из группы кнопок moveToLeft ButtonGroup. Но он передумал и хочет, чтобы объект двигался вправо - он выбирает один радиокнопку из группы кнопок moveToRight ButtonGroup. Мой вопрос - как очистить группу кнопок, которая была выбрана первой. Я пробовал ClearSelection и setSelected(false), но это не работает. Вот мой код:

            JRadioButton vel1 = new JRadioButton("10 km/h");
            JRadioButton vel2 = new JRadioButton("20 km/h");
            JRadioButton vel3 = new JRadioButton("30 km/h");
            JRadioButton vel4 = new JRadioButton("40 km/h");

            ButtonGroup moveToRight = new ButtonGroup();
            moveToRight.add(vel1);
            moveToRight.add(vel2);
            ButtonGroup moveToLeft = new ButtonGroup();
            moveToLeft.add(vel3);
            moveToLeft.add(vel4);

            if(vel1.isSelected() || vel2.isSelected() )
            {
                moveToLeft.clearSelection();
                //vel3.setSelected(false);
                //vel4.setSelected(false);
            }
            if(vel3.isSelected() || vel4.isSelected() )
            {
                moveToRight.clearSelection();
                //vel1.setSelected(false);
                //vel2.setSelected(false);
            }

Группы кнопок находятся на двух разных панелях.


person beechy    schedule 06.05.2018    source источник
comment
Звучит как плохой дизайн. Переключатели обычно используются, когда выбран один и только один элемент в группе. Возможно, лучший дизайн — это одна группа кнопок со скоростями от -40 до +40 или одна группа для скорости (включая нулевую), а другая — для выбора влево или вправо.   -  person FredK    schedule 06.05.2018
comment
Где ваш минимально воспроизводимый пример, демонстрирующий вашу проблему??? Вас попросили опубликовать один в вашем последнем вопросе: stackoverflow. ком/вопросы/49211619/. MCVE следует размещать с КАЖДЫМ вопросом. Почему мы должны продолжать помогать, если вы не можете прислушиваться к предложениям, которые были сделаны в прошлом??? Вам также была дана ссылка на учебник Swing по тому же вопросу. Почему вы не посмотрели в учебнике примеры, в которых используется переключатель??? Прежде чем задавать вопрос, сначала прочтите немного.   -  person camickr    schedule 07.05.2018


Ответы (1)


Что не работает? Если выполняется оператор clearSelection(...), то он будет работать. Если это не работает, то оператор не выполняется.

Код, который вы разместили, ничего не сделает. Этот код будет выполнен, когда кнопки будут созданы, а рамка еще даже не видна, поэтому, очевидно, они еще не будут выбраны пользователем.

...он/она выбирает одну радиокнопку...

Итак, вам нужно добавить ActionListener к переключателю, чтобы выполнить соответствующий код.

Прочтите раздел руководства Swing по Как использовать переключатели для получения дополнительной информации и рабочих примеров.

person camickr    schedule 06.05.2018