SeekBar(JSlider)的搜索非常复杂(MediaPlayer、JavaSwing)
您可以在这里看到问题: 我怎样才能解决这个问题?只有当我用鼠标“抛出”滑块的光标时,它才偶尔起作用,而当我等待并释放时,它就不起作用。(我的目标是让seeking与‘foobar2000’的seekbar相似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
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文件,并听到我正在查找的音乐:)