Passei vários dias pesquisando esse problema específico e usei muitas soluções sugeridas, como '.dispose ()', que pensei que poderiam funcionar, mas não funcionaram, mas nada que eu possa encontrar aborda especificamente esse problema. Achei que um 'superusuário' poderia ter enfrentado esse problema ou algo semelhante. Postei um issue no Git-Hub com detalhes sobre esse assunto, do que acredito ser um bug no parâmetro SuggestProvider, não atualizando a caixa de preenchimento automático com uma lista atualizada. O aplicativo que usa este ControlFX da FXExperience alterna entre bancos de dados, de modo que o JavaFX ComboBox resultante é atualizado com uma nova lista de parâmetros específicos para cada banco de dados que também são passados para o método Textfields.bindAutoCompletion. Além disso, sempre que um banco de dados é trocado, o defeito no SuggestProvider também adiciona a nova lista à lista antiga.
Recriei os detalhes abaixo porque já faz algum tempo sem nenhum reconhecimento. Você pode ver o problema aqui, se necessário:https://github.com/controlsfx/controlsfx/issues/1126
Antes de atualizar o ComboBox e o preenchimento do BindAuto: estes são os dados no ComboBox e no AutoComplete antes da atualização Antes de atualizar o ComboBox e o BindAuto Completion
Combo definido como nulo: ComboBox de tópico redefinido para nulo Combinação definida como nula
Passando valor nulo apenas para ControlFX bindAutoComplete: passando novos valores para o método bindAutoCompletion Passando valor nulo apenas para ControlFX bindAutoComplete
Nenhum item no ComboBox: o menu suspenso do ComboBox mostra apenas o item de valor nulo passado Nenhum item no ComboBox
ControlsFX_bindAutoComplete retém a lista antiga: os controles bindAutoCompletion ainda mantêm a lista antiga de itens, embora tenham sido passados parâmetros atualizados. ControlsFX_bindAutoComplete mantém a lista antiga
Responder1
Consegui resolver esse problema. Em vez de deletar esta postagem, pensei que seria útil ter algo para a próxima pessoa. A solução foi bastante simples. Eu não consegui o.dispose()método para trabalhar. Foi porque a declaração AutoCompletionBinding sugerida fornecida estava incorreta. O método .dispose() aparecia mas como não houve erro, pensei que fosse outra coisa. Esta é a solução:
Faça isso (sem declaração de tipo):
AutoCompletionBinding auto = TextFields.bindAutoCompletion(myField, myList);
Não faça isso:
AutoCompletionBinding<String> auto = TextFields.bindAutoCompletion(myField, myList);
Depois de fazer esta declaração, basta chamar o método .dispose() antes de reinicializar seu TextField ou ComboBox com dados atualizados.
auto.dispose();