JavaFX TableColumn 的 setCellValueFactory 和 setCellFactory 应用场景

本文探讨了使用JavaFX TableView时遇到的数据展示问题,如工资数值的过多小数位和日期排序错误。通过setCellValueFactory和setCellFactory方法,实现了数据的有效格式化和正确排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,未经博主允许不得转载。

JavaFX TableColumn 的 setCellValueFactory 和 setCellFactory 应用场景

简单概述

在用JavaFX 做表格的时候(TableView),发现JavaFX内置了很多功能,最常见的就是排序。TableView 下包含了 TableColumn。每一列是一个TableColumn,该列会根据对象的类型(比如Integer, Double, Float, String 等等)进行排序。再排序的时候,默认调用对应类型的Comparator进行排序,当然你也可以创建自己的Comparator。这个功能很实用,那么问题来了,这和我的标题又有什么联系呢。
事情是这样的,我的表格中有一列是展示工资的。众所周知,工资没必要保留太多位数字,一般两位数就够了。但刚开始用TableColumn时,因为工资是自动计算出来的,如下图所示。
示例-1
金额等于 0.07 x 3 = 0.21, 但显示的效果是0.2100000000… 很不美观
再者,我们看向日期列,因为需要格式化显示日期格式,所以不得不将Date 转化为String 打印输出。导致的结果就是默认调用String类的 Comparator,然后排序结果是这样的:
2019-5-1, 2019-5-11, 2019-5-12, … 2019-5-2, 2019-5-21, …
没有按照真正的日期排序࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值