JavaFX 8媒体播放器进度滑块

时间:2017-02-25 22:18:18

标签: java javafx

所以,我一直在使用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()));
    });

1 个答案:

答案 0 :(得分:1)

您需要滑块的max property等于您正在播放的媒体的总秒数。请注意,在媒体播放器从媒体资源中读取足够的信息之前,不会知道媒体的totalDuration。最好的方法是使用绑定:

slider.maxProperty().bind(Bindings.createDoubleBinding(
    () -> player.getTotalDuration().toSeconds(),
    player.totalDurationProperty()));

在某些情况下,媒体资源不会指示总持续时间;在这种情况下,可能无法将滑块链接到播放器的当前时间,除非您有其他机制知道总持续时间。