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

来源:互联网 发布:java培训机构排名2016 编辑:程序博客网 时间:2024/06/06 20:29

首先是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",已经不存在了;若全部删除则匹配列表为空。








0 0
原创粉丝点击