JavaFX Scene Builder ListView的使用 三(数据的排序)

写文章只是方面自己记忆 就不做过多的讲解了 不明白的可以看看之前的文章

当然要先用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);

			}
		});

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值