Я потратил несколько дней на изучение этой конкретной проблемы и использовал много предложенных решений, таких как '.dispose()', которые, как я думал, могли бы работать, но не работали, но ничего конкретно решающего эту проблему я не нашел. Я думал, что 'суперпользователь' мог столкнуться с этой проблемой или похожей. Я опубликовал проблему на Git-Hub с подробностями по этой проблеме, о том, что, как я считаю, является ошибкой в параметре suggestionProvider, не обновляющем поле автодополнения обновленным списком. Приложение, использующее этот ControlFX от FXExperience, переключается между базами данных, поэтому полученный JavaFX ComboBox обновляется новым списком параметров, специфичных для каждой базы данных, которые также передаются в метод Textfields.bindAutoCompletion. Кроме того, каждый раз, когда база данных переключается, дефект в suggestionProvider также добавляет новый список к старому списку.
Я воссоздал детали ниже, поскольку некоторое время не было никаких подтверждений. Вы можете увидеть проблему здесь, если необходимо:https://github.com/controlsfx/controlsfx/issues/1126
Перед обновлением ComboBox и автозаполнения BindAuto: Это данные в ComboBox и автозаполнении до обновления. Перед обновлением ComboBox и автозаполнения BindAuto
Combo установлен на ноль: Тема ComboBox сброшена на ноль Комбо установлено на ноль
Передача только пустого значения в ControlFX bindAutoComplete: Передача новых значений в метод bindAutoCompletion Передача только нулевого значения в ControlFX bindAutoComplete
Нет элементов в ComboBox: раскрывающийся список ComboBox показывает только переданный элемент со значением null Нет элементов в ComboBox
ControlsFX_bindAutoComplete сохраняет старый список: Элемент управления bindAutoCompletion по-прежнему сохраняет старый список элементов, хотя ему были переданы обновленные параметры. ControlsFX_bindAutoComplete сохраняет старый список
решение1
Я смог решить эту проблему. Вместо того, чтобы удалить этот пост, я подумал, что было бы полезно иметь что-то для следующего человека. Решение было довольно простым. Я не мог получить.распорядиться()метод для работы. Это было потому, что предложенное объявление AutoCompletionBinding было неверным. Метод .dispose() появлялся, но поскольку ошибки не было, я думал, что это что-то другое. Вот исправление:
Сделайте это (без объявления типа):
AutoCompletionBinding auto = TextFields.bindAutoCompletion(myField, myList);
Не делай это:
AutoCompletionBinding<String> auto = TextFields.bindAutoCompletion(myField, myList);
После этого объявления вы просто вызываете метод .dispose() перед повторной инициализацией вашего TextField или ComboBox с обновленными данными.
auto.dispose();