JavaFX ComboBox: исчезает выбранный элемент в выпадающем списке
Исчезает (визуально) выбранный элемент из выпадающего списка ComboBox.
Сам выпадающий список - ObservableArrayList(ArrayList<Label>).
Элементы выпадающего списка отображает Label при помощи setCellFactory.
for (int i = 0; i < 4; i++) {
ComboBox<Label> comboBox = (ComboBox<Label>) scene.lookup(CHOICEBOX + i);
switch (i) {
case 0: comboBox.setItems(FXCollections.observableArrayList(Choices0)); break;
case 1: comboBox.setItems(FXCollections.observableArrayList(Choices1)); break;
case 2: comboBox.setItems(FXCollections.observableArrayList(Choices2)); break;
case 3: comboBox.setItems(FXCollections.observableArrayList(Choices3)); break;
}
comboBox.setCellFactory(param -> new ListCell<Label>() {
@Override
protected void updateItem(Label lbl, boolean empty) {
super.updateItem(lbl,empty);
setGraphic(lbl);
}
});
choiceBoxes.add(comboBox);
}
В данном случае choiceBoxes всего лишь ArrayList<ComboBox<Label>> и Choices это ArrayList<Label> соответственно.
Нужно, чтоб элементы выпадающего списка не пропадали визуально.
Изначально, после выбора элемента из списка выбранный элемент менял цвет текста Label на белый (понятия не имею почему).
Это я решил, сменив цвет текста на черный в установленный Font в Label.
Я попытался так же сделать с элементами выпадающего списка, но результата не дало.
Ответы (1 шт):
Поразмышляв , я пришел к такому решению:
Помещаем нужные Label В VBox (а VBox в значение setVisible(false)) ,а дальше вешаем слушатель через EventHandler на ComboBox по нажатию лкм. После нажатия Лкм по ComboBox значение setVisible(true) . Дальше , на эти Label вешаем слушатель по нажатию которых СomboBox ставил значение полученное от Label.
Да, это костыль, зато рабочий. Предлагайте более лучшие решения.