首先是API文檔 controlsfx官方
然後,選擇 HomePage
這裏有兩個版本,部分控件在兩個版本存在新的功能方法。如AutoCompletionBinding抽象類,在8.4版本支持對動態下拉匹配框顯示的個數可控,而之前版本則不支持這個方法。
setVisibleRowCount(int value)//用於顯示下拉匹配的行數
附上示例代碼:
public class TestAutoBing extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("測試用");
//測試帶有自動清除按鈕的TextField
// primaryStage.setScene(testClearableTextField());
//測試動態匹配下拉列表
primaryStage.setScene(testAutoCompletionBingdingTextField());
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
public Scene testClearableTextField(){
//帶清除按鈕的文本框
TextField textClearable= TextFields.createClearableTextField();
StackPane root = new StackPane();
root.getChildren().add(textClearable);
Scene scene = new Scene(root,300,300);
return scene;
}
public Scene testAutoCompletionBingdingTextField(){
List list = new ArrayList();
list.add("123456");
list.add("123567");
list.add("123678");
list.add("456123");
list.add("456234");
list.add("456345");
list.add("789456");
list.add("788567");
list.add("123444");
list.add("123445");
list.add("123555");
list.add("123556");
list.add("123666");
list.add("123667");
list.add("123677");
list.add("456777");
list.add("456788");
list.add("456888");
list.add("456889");
list.add("456999");
list.add("789444");
list.add("789455");
list.add("789466");
list.add("789566");
list.add("123745");
list.add("123756");
list.add("123765");
list.add("123764");
list.add("123546");
list.add("456213");
list.add("456231");
list.add("123879");
list.add("123897");
list.add("123978");
list.add("123987");
TextField textField = new TextField();
AutoCompletionBinding textAutoBingding = TextFields.bindAutoCompletion(textField, FXCollections.observableArrayList(list));
textAutoBingding.setVisibleRowCount(3);
StackPane root = new StackPane();
root.getChildren().add(textField);
Scene scene = new Scene(root,300,800);
return scene;
}
}
執行結果如下:
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("測試用");
//測試帶有自動清除按鈕的TextField
// primaryStage.setScene(testClearableTextField());
//測試動態匹配下拉列表
primaryStage.setScene(testAutoCompletionBingdingTextField());
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
public Scene testClearableTextField(){
//帶清除按鈕的文本框
TextField textClearable= TextFields.createClearableTextField();
StackPane root = new StackPane();
root.getChildren().add(textClearable);
Scene scene = new Scene(root,300,300);
return scene;
}
public Scene testAutoCompletionBingdingTextField(){
List list = new ArrayList();
list.add("123456");
list.add("123567");
list.add("123678");
list.add("456123");
list.add("456234");
list.add("456345");
list.add("789456");
list.add("788567");
list.add("123444");
list.add("123445");
list.add("123555");
list.add("123556");
list.add("123666");
list.add("123667");
list.add("123677");
list.add("456777");
list.add("456788");
list.add("456888");
list.add("456889");
list.add("456999");
list.add("789444");
list.add("789455");
list.add("789466");
list.add("789566");
list.add("123745");
list.add("123756");
list.add("123765");
list.add("123764");
list.add("123546");
list.add("456213");
list.add("456231");
list.add("123879");
list.add("123897");
list.add("123978");
list.add("123987");
TextField textField = new TextField();
AutoCompletionBinding textAutoBingding = TextFields.bindAutoCompletion(textField, FXCollections.observableArrayList(list));
textAutoBingding.setVisibleRowCount(3);
StackPane root = new StackPane();
root.getChildren().add(textField);
Scene scene = new Scene(root,300,800);
return scene;
}
}
功能要求:
點擊按鈕刪除動態匹配的下拉元素
public class TestAutoBing extends Application{
AutoCompletionBinding textAutoBingding =null;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("測試用");
//測試帶有自動清除按鈕的TextField
// primaryStage.setScene(testClearableTextField());
//測試動態匹配下拉列表
primaryStage.setScene(testAutoCompletionBingdingTextField());
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
public Scene testClearableTextField(){
//帶清除按鈕的文本框
TextField textClearable= TextFields.createClearableTextField();
StackPane root = new StackPane();
root.getChildren().add(textClearable);
Scene scene = new Scene(root,300,300);
return scene;
}
public Scene testAutoCompletionBingdingTextField(){
List list = new ArrayList();
list.add("aaaa");
list.add("aabb");
list.add("abcc");
TextField textField = new TextField();
ObservableList lsitObservable = FXCollections.observableArrayList(list);
textAutoBingding = TextFields.bindAutoCompletion(textField, lsitObservable);
textAutoBingding.setVisibleRowCount(3);
VBox root = new VBox();
root.getChildren().add(textField);
Button btnRemove = new Button("刪除");
btnRemove.setOnAction(new EventHandler() {
public void handle(ActionEvent event) {
//下面3行實現動態改變綁定下拉匹配列表
lsitObservable.remove(textField.getText());//刪除文本框中選中元素
textAutoBingding.dispose();//解除綁定關係
//重新綁定關係,因爲ObservableList lsitObservable是動態集合,元素隨操作即時變化。
textAutoBingding=TextFields.bindAutoCompletion(textField,lsitObservable);
System.out.println("執行刪除");
};
});
root.getChildren().add(btnRemove);
Scene scene = new Scene(root,300,300);
return scene;
}
}
首先執行刪除"aaaa",然後再次清空輸入,發下下拉匹配列表中 "aaaa",已經不存在了;若全部刪除則匹配列表爲空。