SeekBar(JSlider)非常不稳定(MediaPlayer,Java Swing)

时间:2017-07-13 18:42:13

标签: java eclipse media-player jslider

你可以在这里看到问题:

(gif)

我该如何解决这个问题?它只是偶尔有效,如果我扔掉'用我的鼠标滑块的光标,如果我等待并释放,它就不起作用。 (我的目标是寻求类似于&foffar2000的搜索栏。

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){

                }
            }
    });

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,我的问题就像我设置它来监听拖动一样。

而不是使用常识和听取实际拖拽,我反而听取了“鼠标释放”(即拖动和释放导致它将值更新为释放点)但这对我没有任何好处,并导致上面的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文件,并在我寻求的时候听到音乐:)