我有一个Slider,每隔几毫秒在我的代码中更新一次,因为它显示了MediaPlayer的当前进度,但是当用户调整Slider时,它应该寻找。
MutableBoolean seeking = new MutableBoolean();
seekSlider.setOnMousePressed(e -> seeking.setTrue());
seekSlider.setOnMouseReleased(e -> {
player.seek(Duration.millis(seekSlider.getValue()));
Platform.runLater(() -> seeking.setFalse());
});
player.addPlaybackTimeListener(time -> {
if(seeking.isFalse())
seekSlider.setValue(time.toMillis());
});
但这并不理想,因为它仅适用于鼠标控制,而不适用于使用键盘调节滑块(左箭头和右箭头)。当试图添加它时,它完全失败,因为键调整被简单地覆盖:
seekSlider.setOnKeyPressed(e -> player.seek(Duration.millis(seekSlider.getValue())));
现在我想知道是否有办法通常检测用户何时更改Slider的值。在查看Slider类时,我意识到那里绝对没有逻辑,只有属性。这导致了两个问题:
我也发现了这个问题:JavaFX - Set Slider value after dragging mouse button但它也不适用于密钥更改。