如何在JFXAutoCompletionPopup JavaFX中限制自动完成结果

时间:2018-08-12 14:03:03

标签: java javafx jfoenix

    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个动画。

1 个答案:

答案 0 :(得分:0)

更改:

$titel_categorie = false;

收件人:

autoCompPop.filter(string -> string.toLowerCase().contains(autoTF.getText().toLowerCase()));

可能会帮助您,而不是通过强制限制结果,而是告诉弹出窗口搜索以输入的文本开头的名称,而不是包含的名称文本,从而减少了搜索结果的数量。

JFXAutocompletePopup似乎没有限制搜索结果的方法,因为setCellLimit()仅限制可见单元的数量(实质上是缩短弹出窗口的高度,而不是实际项目的数量)。 JFXAutocompletePopup source code