为媒体播放器制作搜索栏.

Hax*_*xor 3 java swing jmf

我正在使用JMF制作媒体播放器,我想使用我自己的控制组件任何人都可以帮我制作媒体播放器的搜索栏,以便它可以根据滑块位置播放歌曲.

只是建议我一些逻辑,我可以事后弄清楚编码部分

if(player!=null){
    long durationNanoseconds = 
    (player.getDuration().getNanoseconds());
    durationbar.setMaximum((int) player.getDuration().getSeconds());
    int duration=(int) player.getDuration().getSeconds();
    int percent = durationbar.getValue();
    long t = (durationNanoseconds / duration) * percent;
    Time newTime = new Time(t);
    player.stop();
    player.setMediaTime(newTime);
    player.start();
    mousedrag=true;
Run Code Online (Sandbox Code Playgroud)

这是代码.现在我如何让滑块与歌曲一起移动?我拖动/点击它时滑块有效,但它不随着歌曲移动.

And*_*son 7

使用滑块的问题是,当以编程方式移动滑块位置时,它会触发事件.在滑块上触发事件时,通常表示应用程序.必须做点什么,比如移动歌曲位置.效果是永无止境的循环.通过设置标志并忽略某些事件,可能有办法解决这个问题,但我决定采用不同的方式.

相反,我使用a JProgressBar来指示轨道中的位置,并使用a MouseListener来检测用户何时单击单独的位置.使用Swing更新进度条Timer,每隔50-200毫秒检查一次轨道位置.MouseEvent检测到a 时,重新定位轨道.

该栏位于此GUI的右上角.将鼠标悬停在它上面会产生一个工具提示,显示该鼠标位置的轨道时间.

Duke Box使用进度条进行赛道位置