Java / JavaFX8:当TextField中的输入具有一定长度时执行操作

时间:2014-10-10 11:57:07

标签: java action javafx-8 string-length controlsfx

我目前正在使用ControlsFX的AutoComplete TextField功能来显示用户输入时的建议。建议量很大,因此列表不适合页面。

我想将字符串列表的长度设置为最大值,但这在ControlsFX中是不可能的(因为我可以得出结论)。因此,我正在考虑一种解决方法,其中列表仅在用户键入3个字符或更多字符的字符串时显示。

我现在已将此操作设置为在单击TextField时执行(其中searchCustomer是我的TextField):

@FXML
private void searchCustomer() {
    //Get all customers from shop
    String[][] customersOfShop = octocash.Main.databaseConnection.getData("some query", 
                    Arrays.asList("some columname"));

    //Convert 2D array to 1D array
    int noOfRows = customersOfShop.length;
    String[] customersForList = new String[noOfRows];
    for(int k=0; k<noOfRows; k++) {
        customersForList[k] = customersOfShop[k][0];
    }
    //Set values to AutoComplete TextField
    TextFields.bindAutoCompletion(searchCustomer, customersForList);
}

如何在java / javaFX8中执行此操作?

1 个答案:

答案 0 :(得分:1)

其中一种方法可以是观察文本长度:

IntegerBinding ib = Bindings.length(textField.textProperty());

ib.addListener((ObservableValue<? extends Number> observable, Number oldValue, Number newValue) -> {
    if(newValue.intValue() >= 3) {
        // trigger auto complete
    }
});