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
.
Да, это костыль, зато рабочий. Предлагайте более лучшие решения.