gpt4 book ai didi

JavaFX ChangeListener 持续时间问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:55 27 4
gpt4 key购买 nike

我对 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”类型,并且 Duration class具有诸如 toMinutes()toSeconds() 之类的方法,但我无法将它们应用于 newVal,而且我不明白为什么。

我可以创建一个新的 Duration 对象:

Duration testDuration = Duration.millis(100000);

然后使用方法:

double secondsDuration = testDuration.toSeconds();
// 100.0

因此,如果 testDurationnewVal 都是持续时间对象,为什么我不能将这些方法应用于 newval

总的来说,我走在正确的道路上吗?我知道必须有一些字符串格式才能使我的输出正确,但在我看来,首先我需要以非字符串格式从 newVal 获取值。

提前致谢。

最佳答案

这是因为你的 newVal 是一个对象而不是一个持续时间。您可以转换它并取消引用它,例如 ((Duration)newVal).另一种更好的方法是使你的方法 ChangeListener<Duration>

TimeListener = new ChangeListener<Duration>() {
@Override public void changed(ObservableValue<? extends Duration> o, Duration oldVal, Duration newVal) {
//now newVal is of Duration class
}
};

关于JavaFX ChangeListener 持续时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com