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 文件,并在搜索时听到音乐:)
你可以在这里看到问题:
(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 文件,并在搜索时听到音乐:)