ArrayList<String> aniNames = new ArrayList<>();
我与数据库建立了连接,并在上面的ArrayList中存储了7K动漫名称。
JFXAutoCompletePopup<String> autoCompPop = new JFXAutoCompletePopup<>();
for (int i=0; i<aniNames.size(); i++){
autoCompPop.getSuggestions().addAll(aniNames.get(i));
}
autoCompPop.setSelectionHandler(event ->{
autoTF.setText(event.getObject());
});
autoTF.textProperty().addListener(observable -> {
autoCompPop.filter(string -> string.toLowerCase().contains(autoTF.getText().toLowerCase()));
if (autoCompPop.getFilteredSuggestions().isEmpty() || autoTF.getText().isEmpty()) {
autoCompPop.hide();
} else {
autoCompPop.show(autoTF);
}
});
所以我写了这个程序,当我输入内容时,它会显示自动完成弹出窗口。
当我键入一个字母时,让我们说“ a”或任何其他字母,它显示几乎所有带有“ a”名称的动漫,这意味着几乎所有7k动漫。
我想限制显示的结果数,如果超过一定数目,例如,如果超过20个动画的名称中带有“ a”,那么我希望它仅在弹出窗口中显示前20个动画。
答案 0 :(得分:0)
更改:
$titel_categorie = false;
收件人:
autoCompPop.filter(string -> string.toLowerCase().contains(autoTF.getText().toLowerCase()));
可能会帮助您,而不是通过强制限制结果,而是告诉弹出窗口搜索以输入的文本开头的名称,而不是包含的名称文本,从而减少了搜索结果的数量。
JFXAutocompletePopup似乎没有限制搜索结果的方法,因为setCellLimit()仅限制可见单元的数量(实质上是缩短弹出窗口的高度,而不是实际项目的数量)。 JFXAutocompletePopup source code