Как сделать, чтобы при выборе значения в одном ComboBox автоматически сбрасывался выбор в других ComboBox?

Подскажите, пожалуйста, как реализовать, чтобы при выборе значения в одном ComboBox происходил сброс значений в других ComboBox?

У меня не совсем правильно получается реализовать: при выборе значения в одном ComboBox в других всё сбрасывается, как и надо, но выбранное значение в нужном ComboBox не отображается. Но если я повторно сделаю выбор, тогда все корректно отображается, однако по два раза выбирать значение в одном ComboBox не совсем корректно и правильно.

private String [] Opoveschateli_Arr = {"",
        "Накладной ОПР 3Вт",
        "Накладной ОПР 6Вт",
        "Накладной ОПР 10Вт",
        "Универсальный ОПР 3Вт",
        "Универсальный ОПР 6Вт",
        "Универсальный ОПР 10Вт",
        "Встраиваемый ОПР 3Вт",
        "Встраиваемый ОПР 6Вт"
};

private String [] Kolonki_Arr = {"",
        "Колонка ОПР 10Вт",
        "Колонка ОПР 40Вт"
};

private String [] Prozhektori_Arr = {"",
        "Прожектор ОПР 15Вт"
};

private String [] Rupora_Arr = {"",
        "Рупорный ОПР 10Вт",
        "Рупорный ОПР 15Вт",
        "Рупорный ОПР 30Вт",
        "Рупорный ОПР 100Вт"
};

private String [] Sistemi_Arr = {"",
        "Система ОПР 200Вт",
        "Система ОПР 400Вт",
        "Система ОПР 500Вт",
        "Система ОПР 600Вт",
        "Система ОПР 800Вт",
        "Система ОПР 1200Вт"
};

@FXML
void initialize() {}

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {

    Opoveschateli.getItems().addAll(Opoveschateli_Arr);
    Opoveschateli.valueProperty().addListener((observable, oldval, newVal)->
    {
        if (newVal != null)
        {
            Kolonki.setValue("");
            Prozhektori.setValue("");
            Rupora.setValue("");
            Sistemi.setValue("");
        }
    });

    Kolonki.getItems().addAll(Kolonki_Arr);
    Kolonki.valueProperty().addListener((observable, oldval, newVal)->
    {
        if (newVal != null)
        {
            Opoveschateli.setValue("");
            Prozhektori.setValue("");
            Rupora.setValue("");
            Sistemi.setValue("");
        }
    });

    Prozhektori.getItems().addAll(Prozhektori_Arr);
    Prozhektori.valueProperty().addListener((observable, oldval, newVal)->
    {
        if (newVal != null)
        {
            Opoveschateli.setValue("");
            Kolonki.setValue("");
            Rupora.setValue("");
            Sistemi.setValue("");
        }
    });

    Rupora.getItems().addAll(Rupora_Arr);
    Rupora.valueProperty().addListener((observable, oldval, newVal)->
    {
        if (newVal != null)
        {
            Opoveschateli.setValue("");
            Kolonki.setValue("");
            Prozhektori.setValue("");
            Sistemi.setValue("");
        }
    });

    Sistemi.getItems().addAll(Sistemi_Arr);
    Sistemi.valueProperty().addListener((observable, oldval, newVal)->
    {
        if (newVal != null)
        {
            Opoveschateli.setValue("");
            Kolonki.setValue("");
            Prozhektori.setValue("");
            Rupora.setValue("");
        }
     });
}

Ответы (1 шт):

Автор решения: Nowhere Man

Попробуйте вместо выбора пустого значения устанавливать в других комбобоксах null и/или вызывать clearSelection:

Opoveschateli.valueProperty().addListener((observable, oldval, newVal)-> {
    if (newVal != null) {
        Kolonki.getSelectionModel().clearSelection();
        Prozhektori.getSelectionModel().clearSelection();
        Rupora.getSelectionModel().clearSelection();
        Sistemi.getSelectionModel().clearSelection();

        Kolonki.setValue(null);
        Prozhektori.setValue(null);
        Rupora.setValue(null);
        Sistemi.setValue(null);
    }
});
// и т.д. для других комбобоксов
→ Ссылка