上午学习了编辑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
2.模糊查找listView数据
必须要以对象的形式 存入数据 否则编译出错
我先创建了个User类 set get方法
添加对象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)组件 用于输入数据查找
效果图
接下来写模糊查找
对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的话 没有