SeekBar (JSlider) 有非常不稳定的搜索 (MediaPlayer, Java Swing)

SeekBar (JSlider) has very choppy seeking (MediaPlayer, Java Swing)

你可以在这里看到问题:

(gif)

我该如何解决这个问题?如果我用鼠标 'throw' 滑块的光标,它只会偶尔起作用,如果我等待并释放则不起作用。 (我的目标是寻找类似于'foobar2000's seekbar.

timeSlider = new JSlider();
    timeSlider.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseReleased(MouseEvent e) {
                try{
                    int dv = timeSlider.getValue() * 1000;
                    timeSlider.setValue(dv);
                    Duration draggedVal = new Duration(dv);
                    mediaPlayer.seek(draggedVal);
                }catch (Exception e3){

                }
            }
    });

我找到了一个解决方案,我的问题在于我将其设置为侦听拖动的方式。

我没有使用常识并聆听实际的拖动,而是聆听了 "Mouse Release"(即,拖动和释放导致它更新值到释放点)但这对我没有帮助很好,导致上面的 gif 滞后。

timeSlider.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent arg0) {
            isDragging = true;
            try{
                int dv = timeSlider.getValue() * 1000;
                timeSlider.setValue(dv);
                Duration draggedVal = new Duration(dv);
                mediaPlayer.seek(draggedVal);
            }catch (Exception e3){

            } finally {
                isDragging = false;
            }
        }
    });

现在,使用实际的 "mouseDragged" 动作监听器,我可以顺利地搜索任何 mp3 文件,并在搜索时听到音乐:)