2014-10-10 9 views
0

현재 사용자가 입력 할 때 ControlsFX의 AutoComplete 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); 
} 

어떻게 자바/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