【发布时间】:2020-05-12 09:01:24
【问题描述】:
我正在使用 JavaFX 的 MediaPlayer 类制作一个随着歌曲播放而移动的滑块。这完全正常,滑块随着歌曲移动。如果拖动滑块,它会更改歌曲的位置(使用 .seek() 方法)。唯一的问题发生在我单击滑块时。歌曲没有移动,我认为这是因为看着歌曲位置的听众仍在移动,这正在将滑块移动到下一个位置。我认为这阻止了用户的点击,但我不确定如何解决它。这是否意味着暂停听众或我不确定的事情?
protected void updateValues() {
if (playTime != null && progressBar != null && volume != null) {
Platform.runLater(new Runnable() {
public void run() {
Duration currentTime = player.getCurrentTime();
duration = player.getMedia().getDuration();
playTime.setText(formatTime(currentTime, duration));
progressBar.setDisable(duration.isUnknown());
if (!progressBar.isDisabled()
&& duration.greaterThan(Duration.ZERO)
&& !progressBar.isValueChanging()) {
progressBar.setValue(currentTime.divide(duration).toMillis()
* 100.0);
}
}
});
}
}
progressBar.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
player.seek(duration.multiply(progressBar.getValue()/100.0));
}
});
如果有帮助,我已经关注了:https://docs.oracle.com/javafx/2/media/playercontrol.htm
【问题讨论】:
标签: java javafx slider listener