我花了很多天研究這個特定問題,並使用了許多建議的解決方案,例如“.dispose()”,我認為這些解決方案可能有效,但沒有,但我找不到任何具體解決這個問題的方法。我認為“超級用戶”可能遇到過這個問題或類似問題。我在 Git-Hub 上發布了一個問題,其中包含有關此問題的詳細信息,我認為這是 suggestProvider 參數中的錯誤,沒有使用更新的列表更新自動完成框。使用 FXExperience 的 ControlFX 的應用程式在資料庫之間切換,因此產生的 JavaFX ComboBox 使用特定於每個資料庫的新參數清單進行更新,這些參數也傳遞給 Textfields.bindAutoCompletion 方法。此外,每當切換資料庫時,suggestionProvider 中的缺陷也會將新清單新增至舊清單。
我重新創建了下面的詳細信息,因為它已經有一段時間沒有得到確認。https://github.com/controlsfx/controlsfx/issues/1126
Before Updating ComboBox And BindAuto Completion:這是更新先前 ComboBox 和 AutoComplete 中的數據 更新 ComboBox 和 BindAuto Completion 之前
Combo Set To Null:主題 ComboBox 重置為 null 組合設定為空
僅將空值傳遞給 ControlFX bindAutoComplete:將新值傳遞給 bindAutoCompletion 方法 僅將空值傳遞給 ControlFX bindAutoComplete
組合方塊中沒有項目:組合方塊下拉清單僅顯示傳遞的空白值項目 組合框中沒有項目
ControlsFX_bindAutoComplete 保留舊清單:儘管傳遞了更新的參數,但控制項bindAutoComplete 仍保留舊的項目清單。 ControlsFX_bindAutoComplete 保留舊列表
答案1
我能夠解決這個問題。我沒有刪除這篇文章,而是認為為下一個人提供一些東西會很有用。解決方案非常簡單。我無法得到.dispose()工作方法。這是因為提供的建議 AutoCompletionBinding 聲明不正確。 .dispose() 方法會出現,但由於沒有錯誤,我認為這是別的東西。這是修復:
執行此操作(無類型聲明):
AutoCompletionBinding auto = TextFields.bindAutoCompletion(myField, myList);
不要這樣做:
AutoCompletionBinding<String> auto = TextFields.bindAutoCompletion(myField, myList);
做出此聲明後,您只需在使用更新的資料重新初始化 TextField 或 ComboBox 之前呼叫 .dispose() 方法即可。
auto.dispose();