更新autoComplete JavaFx?

Men*_*ine 7 binding autocomplete javafx-8 controlsfx

我正在使用JavaFX项目.我正在使用ControlFx的 Autcomplete TextField .每次我在数据库表中添加新行,它应该更新自动完成,我这样做但我的问题是显示双上下文菜单,我们可以说双重自动完成,因为我调用方法创建自动完成每次添加表中的新元素.

当我单击一个选项卡时,editBill我调用此方法:

  public void showEditBill() {

        if (!BillPane.getTabs().contains(EditBillTab)) {

            BillPane.getTabs().add(EditBillTab);

        }
        SingleSelectionModel<Tab> selectionModel = BillPane.getSelectionModel();
        selectionModel.select(EditBillTab);
        /*it should remove the old autocomplete from textfield*/
        pushBills(); //Call for cheking new items
    }
Run Code Online (Sandbox Code Playgroud)

pushBills方法():

public void pushBills() {

    ArrayList list = new ArrayList<>();

    bills = new BillHeaderDao().FindAll();

    for (int i = 0; i < bills.size(); i++) {

        list.add(bills.get(i).getIdClient());

    }
    //How can i remove the old bind before bind again
    autoCompletionBinding = TextFields.bindAutoCompletion(SearchBill, SuggestionProvider.create(list));

}
Run Code Online (Sandbox Code Playgroud)

我如何删除旧的自动完成并绑定新的自动完成?

问题描述

Max*_*ing 6

无论如何,如果您需要保留 AutoCompletionTextFieldBinding 对象的实例,从而避免使用:

autoCompleteBinding = TextFields.bindingAutoCompletion(TextField,List);
Run Code Online (Sandbox Code Playgroud)

,这将改变实例,我们可以更深入一点并使用它:

// let's suppose initially we have this possible values:
Set<String> autoCompletions = new HashSet<>(Arrays.asList("A", "B", "C"));
SuggestionProvider<String> provider = SuggestionProvider.create(autoCompletions);
new AutoCompletionTextFieldBinding<>(textField, provider);

// and after some times, possible autoCompletions values has changed and now we have:
Set<String> filteredAutoCompletions = new HashSet<>(Arrays.asList("A", "B"));

provider.clearSuggestions();
provider.addPossibleSuggestions(filteredAutoCompletions);
Run Code Online (Sandbox Code Playgroud)

因此,通过 SuggestionProvider,我们“更新”了自动完成值。为避免建议菜单加倍,请勿再次使用(第二次):

TextFields.bindAutoCompletion(..)
Run Code Online (Sandbox Code Playgroud)