【发布时间】:2014-03-02 04:52:41
【问题描述】:
我对 Java 很陌生,在仔细阅读文档后,我发现自己陷入了困境。
我有一个使用JavaFX MediaPlayer 播放wav 文件的小程序。我的播放器对象有一个 currentTimeProperty,我想在播放期间以分钟:秒显示此属性的输出。
所以我在一个函数的末尾有这个,它接收我的 wav 文件并初始化播放器:
mediaPlayer = new MediaPlayer(wav);
mediaPlayer.currentTimeProperty().addListener(new TimeListener());
那么我有:
public class TimeListener implements ChangeListener {
public void changed(ObservableValue o, Object oldVal, Object newVal) {
//Update time display with MediaPlayer's current time:
currTimeLabel.setText(newVal.toString());
}
}
这行得通。在播放 wav 期间,我的 currTimeLabel 会更新为当前时间,以毫秒为单位。问题是,我希望这个时间以分钟为单位:秒。
变量newVal被列为“持续时间”类型,Duration class有toMinutes()和toSeconds()之类的方法,但我不能将它们应用于newVal,我不明白为什么。
我可以创建一个新的 Duration 对象:
Duration testDuration = Duration.millis(100000);
然后使用方法:
double secondsDuration = testDuration.toSeconds();
// 100.0
如果testDuration 和newVal 都是持续时间对象,为什么我不能将这些方法应用于newval?
总的来说,我是否走在正确的轨道上?我知道必须有一些字符串格式才能使我的输出正确,但在我看来,首先我需要以非字符串格式从 newVal 获取值。
提前致谢。
【问题讨论】: