本帖最后由 MR_HY 于 2010-06-03 22:49:21 编辑

解决方案 »

  1.   

    主体部分已经好了,剩下的应该很简单才对,
    首先获取音频的长度,微秒转毫秒
    根据毫秒数创建JSlider
    那么当拖动时触发事件就用clip.setMicrosecondPosition()就可以跳到对应的位置(非MIDI)
    MIDI好象要用sequence.setTickPosition()
      

  2.   


    恩,谢谢啦,但是音频播放时控制进度条的前进呢?
    音频播放用的是SourceDataLine的wirte方法输出字节,这些输出的字节怎么能和JSlider上的值对应呢?我看来看去输出的字节和音频文件的字节或是帧长什么的似乎都没有什么联系啊,帮忙看下,谢啦。
      

  3.   

    根据进度条设置播放位置用clip.setMicrosecondPosition()
    对应的
    根据播放位置设置进度条就用clip.getMicrosecondPosition()
    定义一个timer,每秒10次,clip.start()的同时timer.start()
    每次timer根据clip.getMicrosecondPosition()
    pressSlider.setValue((int)clip.getMicrosecondPosition()/1000);