如何知道歌曲播放完毕的时间?

时间:2015-01-20 18:02:52

标签: java jframe jlist

我正在制作一个播放歌曲的小型声音播放器。我正在使用TinySound库https://github.com/finnkuusisto/TinySound。正如我从API中看到的那样,它确实带有一个名为.done()的方法,该方法告诉我一个Music对象是否已经完成播放,但是如何在播放时测试它呢?

我目前创建了一个带按钮的JFrame和一个显示歌曲的Jlist,但据我所知,如果我尝试某种while循环来监听歌曲是否完成,我将无法使用其他按钮如停止,暂停等。

我正在考虑沿着这条线的某处(伪代码):

while(theSong.playing()){
    if(theSong.done()){
      playNext();
    }
 }

问题是当进入while循环时,我无法在程序中使用任何其他功能。如果有人想看一些示例代码,请告诉我!

Sindre M

1 个答案:

答案 0 :(得分:0)

在与GUI相同的线程上运行此while会使界面卡住。您可以使用SwingUtilities invokeAndWait方法实现所需的功能:

SwingUtilities.invokeAndWait(new Runnable() {
   public void run() {
       while(theSong.playing()) {
           if(theSong.done()) {
               playNext();
           }
       }
   }
}