关于JavaFX拓展控件库ControlsFx的AutoCompletionBinding的使用

本文介绍了JavaFX的ControlsFx库中AutoCompletionBinding的使用,特别是8.4版本新增的setVisibleRowCount方法,该方法允许控制动态下拉匹配框显示的行数。通过示例展示了输入文字后如何删除并更新下拉匹配列表。
部署运行你感兴趣的模型镜像

首先是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;
 }
}
执行结果如下:


功能要求:
点击按钮删除动态匹配的下拉元素
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",已经不存在了;若全部删除则匹配列表为空。








您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值