将IntegerProperty转换为hh:mm:ss String绑定并绑定到Label

时间:2017-01-24 22:01:15

标签: java javafx

我相信标题中的问题足够详细。

是否有工具可以在javafx中轻松完成?

根据评论: IntegerProperty是JavaFX中的抽象。这里我使用的是SimpleIntegerProperty。

我希望将整数绑定转换为所述时间格式(作为绑定)。

这里的主要问题是如何使用相对较短的代码来实现它(我希望fx为此提供一些技巧 - 就像其他所有内容一样)。

2 个答案:

答案 0 :(得分:1)

我猜你的IntegerProperty代表了几秒钟?如果是这样,siddhadev在How to convert Milliseconds to “X mins, x seconds” in Java?上的回答提供了一种很好的方法,可以将表示时间单位的整数格式化为String。剩下要做的就是为你的属性添加一个监听器,并从那里设置格式化的String

public static String formatStringToTime(int seconds){
    return String.format("%02d:%02d:%02d", TimeUnit.SECONDS.toHours(time),
            TimeUnit.SECONDS.toMinutes(time) - TimeUnit.HOURS.toMinutes((TimeUnit.SECONDS.toHours(time))),
            time - TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(time)));
}

...

//main method
IntegerProperty prop = new SimpleIntegerProperty();
prop.addListener((ob, ov, nv) -> yourObject.setString(formatStringToTime(nv));

答案 1 :(得分:0)

假设您的SimpleIntegerProperty设置为一位数字值,例如9。要将此值绑定到您的Label并加0前缀,只需说:

label.textProperty().bind(simpleIntegerProperty.asString("%02d"));

这将实现您想要的格式:hh:mm:ss