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)
我如何删除旧的自动完成并绑定新的自动完成?
无论如何,如果您需要保留 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)
| 归档时间: |
|
| 查看次数: |
1837 次 |
| 最近记录: |