SeekBar(JSlider)的搜索非常复杂(MediaPlayer、JavaSwing)

SeekBar(JSlider)的搜索非常复杂(MediaPlayer、JavaSwing),java,eclipse,media-player,jslider,Java,Eclipse,Media Player,Jslider,您可以在这里看到问题: 我怎样才能解决这个问题?只有当我用鼠标“抛出”滑块的光标时,它才偶尔起作用,而当我等待并释放时,它就不起作用。(我的目标是让seeking与‘foobar2000’的seekbar相似 timeSlider = new JSlider(); timeSlider.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent

您可以在这里看到问题:

我怎样才能解决这个问题?只有当我用鼠标“抛出”滑块的光标时,它才偶尔起作用,而当我等待并释放时,它就不起作用。(我的目标是让seeking与‘foobar2000’的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){

                }
            }
    });

我找到了一个解决方案,我的问题在于我如何设置它来监听拖拽

我没有使用常识和听实际的拖动,而是听“鼠标释放”(即,拖动和释放使其将值更新到释放点),但这对我没有任何好处,并导致上面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;
            }
        }
    });
现在,使用一个真正的“鼠标标记”动作监听器,我可以顺利地查找任何mp3文件,并听到我正在查找的音乐:)