JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)

上午学习了编辑listView 下午看了模糊查找和自定义编辑
1.自定义编辑

刚开始学的话 方法会很陌生 要记一下
所有代码是都在initialize下直接写 dataList是一个listView组件 泛型是Data

//自定义listView
	dataList.setCellFactory(new Callback<ListView<Data>, ListCell<Data>>() {
			@Override
			public ListCell<Data> call(ListView<Data> param) {
				ListCell<Data> list=new ListCell<Data>(){
				@Override
				protected void updateItem(Data arg0, boolean arg1) {
					super.updateItem(arg0, arg1);
					if(arg1==false){
						HBox hbox=new HBox(10);
						hbox.setAlignment(Pos.BASELINE_LEFT);//对齐显示
						Button bt=new Button("button");
						Label la=new Label("设置");
						hbox.getChildren().addAll(bt,la);//添加
						this.setGraphic(hbox);//启动
					}
				}

			};
			return list;
		}
	});

效果如下图
可在listView添加button 和 label
JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)
2.模糊查找listView数据
必须要以对象的形式 存入数据 否则编译出错
我先创建了个User类 set get方法
JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)
添加对象User到ListView中

ObservableList<Data> list=FXCollections.observableArrayList();//相当于java中的ArrayList
		User user=new User();
		user.setName("A1");
		user.setName("A2");
		user.setName("A3");
		user.setName("A4");
		user.setName("A5");
		user.setName("A6");
		Data ds=new Data("A1", 0);
		Data ds1=new Data("A2", 1);
		Data ds2=new Data("A3", 2);
		Data ds3=new Data("A4", 3);
		Data ds4=new Data("A5", 4);
		Data ds5=new Data("A6", 5);
		list.add(ds);
		list.add(ds1);
		list.add(ds2);
		list.add(ds3);
		list.add(ds4);
		list.add(ds5);
		dataList1.getItems().addAll(list);

添加个TextField(id=tfFind)组件 用于输入数据查找
效果图
JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)
接下来写模糊查找
对tfFind的监听

//tfFind的监听
	tfFind.textProperty().addListener(new ChangeListener<String>() {
		@Override
		public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
		
			FilteredList<Data> fl=list.filtered(new Predicate<Data>() {//创建个新的集合 便于保存查找的数据

				@Override
				public boolean test(Data t) {
					if(t.getName().contains(newValue)){//模糊查询      想要精确查询的话 改成equals
						return true;
					}
					return false;
				}
			});
			dataList1.setItems(fl);将查到的数据保存在dataList1中显示出来
		}

	});

效果输入2 可查出A2,4查出A4,输入B的话 没有
JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)JavaFX Scene Builder ListView的使用(自定义布局以及模糊查找数据)