Существует большой учебник от Oracle о creating a Video Player Control for JavaFX.
Вы можете увидеть обучающий проигрыватель в действии в приложении JavaFX Ensemble.
Учебное пособие содержит информацию о включении временной шкалы игрока.
Вот скриншот видеопроигрывателя JavaFX с временной шкалой от Ensemble.
шаги, чтобы создать ползунок для управления MediaView позиции являются:
- Создание
MediaView
и это связано MediaPlayer
.
- Создайте
Slider
, чтобы контролировать время.
- Слушайте изменения в
Slider
и обновите позицию MediaPlayer
, если необходимо.
- Прослушать изменение на
MediaPlayer
актуального времени и при необходимости обновить Slider
.
Некоторые время ползун конкретные фрагменты кода из образца являются:
// Media player
MediaPlayer mp = new MediaPlayer(new Media(MEDIA_URL));
// Time label
Label timeLabel = new Label("Time: ");
timeLabel.setMinWidth(Control.USE_PREF_SIZE);
mediaBar.getChildren().add(timeLabel);
// Time slider
timeSlider = new Slider();
HBox.setHgrow(timeSlider, Priority.ALWAYS);
timeSlider.setMinWidth(50);
timeSlider.setMaxWidth(Double.MAX_VALUE);
timeSlider.valueProperty().addListener(new InvalidationListener() {
public void invalidated(Observable ov) {
if (timeSlider.isValueChanging()) {
// multiply duration by percentage calculated by slider position
if(duration!=null) {
mp.seek(duration.multiply(timeSlider.getValue()/100.0));
}
updateValues();
}
}
});
....
protected void updateValues() {
if (playTime != null && timeSlider != null && volumeSlider != null && duration != null) {
Platform.runLater(new Runnable() {
public void run() {
Duration currentTime = mp.getCurrentTime();
playTime.setText(formatTime(currentTime, duration));
timeSlider.setDisable(duration.isUnknown());
if (!timeSlider.isDisabled() && duration.greaterThan(Duration.ZERO) && !timeSlider.isValueChanging()) {
timeSlider.setValue(currentTime.divide(duration).toMillis() * 100.0);
}
if (!volumeSlider.isValueChanging()) {
volumeSlider.setValue((int) Math.round(mp.getVolume() * 100));
}
}
});
}
}
...
mp.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override
public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
updateValues();
}
});
// and also invoke updateValues when the MediaPlayer is played, paused, etc.
Привет Jewelsea спасибо за давая reply.I я не успех решения вы предоставили here.I думаю, я не упомянул мои проблемы clearly.I отредактировали мой оригинальный question.Can вы плз бы заглянуть в него Еще раз спасибо. Очень много. – aaaa