2014-10-10 56 views
0

我目前使用ControlsFX中的自動完成TextField功能在用戶輸入時顯示建議。建議的數量很大,因此該列表不適合頁面。Java/JavaFX8:在TextField中輸入時具有一定的長度時執行動作

我想將字符串列表的長度設置爲最大值,但這在ControlsFX中尚不可行(正如我可以斷定的那樣)。因此,我正在考慮一種解決方法,其中列表僅在用戶輸入了3個或更多字符的字符串時才顯示。

我現在已經設置這個動作被點擊的文本字段時執行(其中searchCustomer是我的文本字段):

@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

一個辦法可以觀察到的文本長度:

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

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

感謝Uluk BIY,完美的作品! – bashoogzaad 2014-10-10 14:58:27