Ich habe mehrere Tage damit verbracht, dieses spezielle Problem zu untersuchen und habe viele Lösungsvorschläge wie „.dispose()“ verwendet, von denen ich dachte, dass sie funktionieren könnten, was aber nicht der Fall war. Ich konnte jedoch nichts finden, das dieses Problem speziell behebt. Ich dachte, ein „Superuser“ könnte dieses oder ein ähnliches Problem gehabt haben. Ich habe auf Git-Hub ein Problem mit Einzelheiten zu diesem Problem gepostet, bei dem es sich meiner Meinung nach um einen Fehler im Parameter „suggestionProvider“ handelt, der das Feld für die automatische Vervollständigung nicht mit einer aktualisierten Liste aktualisiert. Die Anwendung, die dieses ControlFX von FXExperience verwendet, wechselt zwischen Datenbanken, sodass die resultierende JavaFX-ComboBox mit einer neuen Liste datenbankspezifischer Parameter aktualisiert wird, die auch an die Methode Textfields.bindAutoCompletion übergeben werden. Darüber hinaus fügt der Defekt im suggestionsProvider bei jedem Datenbankwechsel die neue Liste auch zur alten Liste hinzu.
Ich habe die Details unten neu erstellt, da es einige Zeit lang keine Bestätigung gab. Bei Bedarf können Sie das Problem hier sehen:https://github.com/controlsfx/controlsfx/issues/1126
Vor dem Aktualisieren von ComboBox und BindAuto Completion: Dies sind die Daten in der ComboBox und AutoComplete vor dem Aktualisieren Vor dem Aktualisieren von ComboBox und BindAuto-Vervollständigung
Combo Set To Null: Thema ComboBox auf Null zurücksetzen Combo auf Null gesetzt
Übergeben von nur Nullwerten an ControlFX bindAutoComplete: Übergeben neuer Werte an die Methode bindAutoCompletion Übergeben von Nullwerten nur an ControlFX bindAutoComplete
Keine Elemente in der ComboBox: Die Dropdown-Liste der ComboBox zeigt nur Elemente mit Nullwert an. Keine Elemente in der ComboBox
ControlsFX_bindAutoComplete behält alte Liste bei: Controls bindAutoCompletion behält weiterhin die alte Liste der Elemente bei, obwohl aktualisierte Parameter übergeben wurden. ControlsFX_bindAutoComplete behält alte Liste bei
Antwort1
Ich konnte dieses Problem lösen. Anstatt diesen Beitrag zu löschen, dachte ich, es wäre nützlich, etwas für die nächste Person zu haben. Die Lösung war ganz einfach. Ich konnte den.entsorgen()Methode funktionierte. Der Grund war, dass die vorgeschlagene AutoCompletionBinding-Deklaration falsch war. Die Methode .dispose() wurde angezeigt, aber da kein Fehler auftrat, dachte ich, es sei etwas anderes. So beheben Sie das Problem:
Gehen Sie wie folgt vor (keine Typdeklaration):
AutoCompletionBinding auto = TextFields.bindAutoCompletion(myField, myList);
Mach das nicht:
AutoCompletionBinding<String> auto = TextFields.bindAutoCompletion(myField, myList);
Nachdem Sie diese Deklaration vorgenommen haben, rufen Sie einfach die Methode .dispose() auf, bevor Sie Ihr TextField oder ComboBox mit aktualisierten Daten erneut initialisieren.
auto.dispose();