You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX TableView时长格式化:整数秒转分秒字符串显示

解决方案:自定义TableCell格式化显示

你完全不用修改Model类,只需要给你的length列设置一个自定义的CellFactory,负责把秒数转换成分秒格式的字符串就可以了。CellValueFactory依然负责从Model里获取原始的Integer类型秒数,而CellFactory专门处理显示逻辑,完美契合你的需求。

具体代码修改如下:

public void initialize() {
    ...
    length.setCellValueFactory(new PropertyValueFactory<>("length"));
    
    // 新增这段代码,自定义单元格显示格式
    length.setCellFactory(column -> new TableCell<Model, Integer>() {
        @Override
        protected void updateItem(Integer seconds, boolean empty) {
            super.updateItem(seconds, empty);
            // 处理空单元格或null数据的情况
            if (empty || seconds == null) {
                setText(null);
            } else {
                // 计算分钟和秒数,格式化输出(秒数不足两位补0)
                int minutes = seconds / 60;
                int remainingSeconds = seconds % 60;
                setText(String.format("%d:%02d", minutes, remainingSeconds));
            }
        }
    });
    
    table.setItems(database.getAllModels());
}

代码说明:

  • updateItem方法是TableCell的核心方法,每次单元格数据更新时都会调用
  • 先判断空值情况,避免空指针异常
  • 用整数除法seconds / 60得到分钟数,取余seconds % 60得到剩余秒数
  • String.format("%d:%02d", ...)确保秒数始终是两位数字,比如7秒会显示成0:07,70秒显示成1:10,格式更统一规范

这样修改后,你的TableView就能完美显示分秒格式的时长,而且完全不需要改动Model类的代码~

内容的提问来源于stack exchange,提问作者fangio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:57:43