Как отменить выбор радиокнопки, кроме наличия ее в группе переключателей с другой радиокнопкой - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть 5 радиокнопок (A, B, C, D, E), каждый из 2 находится в группе переключателей (например, A и B находятся в группе toggleGroup, C и D находятся в группе toggleGroup), а пятый один. Я хочу, чтобы, если я выбрал A и C, а затем выбрал E, и A, и C отменяются. Я пытался использовать .setSelected (false), но это не похоже на работу. Есть ли другая функция или я могу иметь E в двух группах toggleGroup? Если да, то как? Спасибо.

1 Ответ

1 голос
/ 12 апреля 2019

Возможно, есть лучшее решение, но это решит вашу проблему:
- Создайте событие в инициализируйте метод для каждого RadioButton , проверяя их значения (и добавьте свой код в соответствии с их статусом выбора):

aRadioButton.selectedProperty().addListener((observable, oldValue, newValue) -> {
    //if RadioButton is selected
    if (newValue) {
        //check if other RadioButtons are selected
        if(bRadioButton.isSelected()) {
             //add your code
             // deselect it using:
             bRadioButton.setSelected(false);
        } else {
        // aRadioButton is deselected
        //add your code
     }
}

- Или создать событие из fxml

@FXML
private void aRadioButton(ActionEvent event) { 
    //this will change the state of RadioButton
    //to preserve deselection from this event use:
    if(!aRadioButton.isSelected()) {
        aRadioButon.setSelected(true);    
    }
    //add your code here
}

Этот способ не включает ToggleGroup , и вам необходимо управлять состоянием выбора RadioButton.

...