我相信标题中的问题足够详细。
是否有工具可以在javafx中轻松完成?
根据评论: IntegerProperty是JavaFX中的抽象。这里我使用的是SimpleIntegerProperty。
我希望将整数绑定转换为所述时间格式(作为绑定)。
这里的主要问题是如何使用相对较短的代码来实现它(我希望fx为此提供一些技巧 - 就像其他所有内容一样)。
答案 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