Как сделать, чтобы при выборе значения в одном 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);
}
});
// и т.д. для других комбобоксов