所以,我使用 JavaFX 开发媒体播放器应用程序已经有一段时间了。不幸的是我遇到了一个我不知道如何解决的问题。我的 GUI 中本应显示视频进度的 slider 无法正常工作。结束得太早了。因此视频会继续播放直至结束,但 slider 已经停止。
任何帮助将不胜感激。
Double time = player.getTotalDuration().toSeconds();
player.currentTimeProperty().addListener((ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) -> {
slider.setValue(newValue.toSeconds());
});
slider.setOnMouseClicked((MouseEvent mouseEvent) -> {
player.seek(Duration.seconds(slider.getValue()));
});
最佳答案
您需要max
property slider 的总秒数等于您正在播放的媒体的总秒数。请注意 totalDuration
直到媒体播放器从媒体资源读取了足够的信息后,媒体的信息才会被知晓。最好的方法是为此使用绑定(bind):
slider.maxProperty().bind(Bindings.createDoubleBinding(
() -> player.getTotalDuration().toSeconds(),
player.totalDurationProperty()));
在某些情况下,媒体资源不会指示总时长;在这种情况下,可能无法将 slider 链接到玩家的当前时间,除非您有其他了解总持续时间的机制。
关于JavaFX 8 媒体播放器进度 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42462242/