写文章只是方面自己记忆 就不做过多的讲解了 不明白的可以看看之前的文章
当然要先用Scene Builder添加个ListView组件 设置个id 在初始化一下
我把昨天的User类换成了Data类 方面写 添加了名字和年龄的属性 set get一下 加个构造方法
给ListView添加数据 Name-Age
ObservableList<Data> list=FXCollections.observableArrayList();//相当于java中的ArrayList
Data ds=new Data("A1","12");
Data ds1=new Data("A2","15");
Data ds2=new Data("A3","11");
Data ds3=new Data("A4","14");
Data ds4=new Data("A5","13");
Data ds5=new Data("A6","16");
list.add(ds);
list.add(ds1);
list.add(ds2);
list.add(ds3);
list.add(ds4);
list.add(ds5);
dataList1.getItems().addAll(list);
创建几个button 方面测试 数据添加成功的效果 排序是按照添加顺序 显示的 跟ArrayList一样 有序的
abn是从小到大的Button的id 添加单机事件
//年龄从小到大
abn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
SortedList<Data> sl=list.sorted(new Comparator<Data>() {//干嘛的我也不知道 官方给的方法 排序用
@Override
public int compare(Data o1, Data o2) {
int a=Integer.valueOf(o1.getAge());//我用的是年龄排序 age
int b=Integer.valueOf(o2.getAge());
return a-b;
}
});
dataList1.setItems(sl);//新的序列 添加到ListView中(id=dataList1)
}
});
从大到小 改成b-a即可
//年龄从大到小
ban.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
SortedList<Data> sl=list.sorted(new Comparator<Data>() {
@Override
public int compare(Data o1, Data o2) {
int a=Integer.valueOf(o1.getAge());
int b=Integer.valueOf(o2.getAge());
return b-a;
}
});
dataList1.setItems(sl);
}
});
恢复原本默认的排序
//恢复默认排行
defaultbtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
dataList1.setItems(list);
}
});