2017-02-25 17 views
1

私はしばらくの間、JavaFXを使用してMedia Playerアプリケーションを開発してきました。残念ながら私は問題を解決する方法がわからない問題に遭遇しました。ビデオの進行状況を表示するはずのGUIのスライダが正しく動作していません。それは早すぎる。ビデオは終了するまで続きますが、スライダはすでに停止しています。JavaFX 8メディアプレーヤー進行スライダ

ご協力いただければ幸いです。

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

あなたは 'slider.setMax()'を使って、ビデオの再生前の時間を知ることができますか? –

+0

いいえ、私はそうではありません。それを再生する前にビデオの長さを取得する必要がありますか? – Matheus

+0

はい、 'Slider'はデフォルトの最大値' 100'を持っています。これはスライダーが約1分40秒で終了するように見えることを意味しますか?ビデオの秒数を計算し、それを使ってスライダの最大値を設定する必要があります。 –

答えて

1

あなたはスライダーのmax propertyあなたがプレイしているメディアの合計秒数に等しくなるようにする必要があります。メディアのtotalDurationは、メディアプレーヤーがメディアリソースから十分な情報を読み取るまで認識されません。最善のアプローチは、このバインディングを使用することです:いくつかのケースでは

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

、合計時間を示しません。メディアリソース。この場合、プレイヤーの現在の時間にスライダーをリンクすることはおそらく不可能になります。

+0

ソリューションが機能しました。しかし、maxValueProperty()をmaxProperty()に変更して動作させる必要がありました。 – Matheus

+0

@Matheusはい、ごめんなさい:それを修正しました。 –

関連する問題