所以,我一直在使用JavaFX开发一个Media Player应用程序。不幸的是,我遇到了一个我不知道如何修复的问题。 GUI中用于显示视频进度的滑块无法正常工作。它结束得太早了。所以视频一直持续到结束,但滑块已经停止。
非常感谢任何帮助。
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()));
});
答案 0 :(得分:1)
您需要滑块的max
property等于您正在播放的媒体的总秒数。请注意,在媒体播放器从媒体资源中读取足够的信息之前,不会知道媒体的totalDuration
。最好的方法是使用绑定:
slider.maxProperty().bind(Bindings.createDoubleBinding(
() -> player.getTotalDuration().toSeconds(),
player.totalDurationProperty()));
在某些情况下,媒体资源不会指示总持续时间;在这种情况下,可能无法将滑块链接到播放器的当前时间,除非您有其他机制知道总持续时间。