JavaFX 8 媒体播放器进度 slider

标签 java javafx

所以,我使用 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/

相关文章:

java - Spring Data JPA - 从字符串转换日期和/或时间时转换失败

JavaFX SegmentedButton - 全宽按钮

JavaFX css id 选择器名称中带有点(句号)

css - 如何使用 CSS 设置两个相邻 TableView 的边框样式,使它们在 JavaFX 11 (OpenJFX 11) 中看起来像是一个 TableView

java - 类型 3 UUID 冲突概率与 MD5 相同吗

Java打印和多线程

Javafx TableView 未显示所有列中的数据

java - javafx中是否可以让一个节点同时出现在两个不同的阶段?

java - 在CustomAdapter中检索Intent的字符串数据

java - EJB 远程客户端从 JBoss AS 7.1 迁移到 Wildfly 8.1