首先是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",已经不存在了;若全部删除则匹配列表为空。
本文介绍了JavaFX的ControlsFx库中AutoCompletionBinding的使用,特别是8.4版本新增的setVisibleRowCount方法,该方法允许控制动态下拉匹配框显示的行数。通过示例展示了输入文字后如何删除并更新下拉匹配列表。
1988

被折叠的 条评论
为什么被折叠?



