我正在制作一个播放歌曲的小型声音播放器。我正在使用TinySound库https://github.com/finnkuusisto/TinySound。正如我从API中看到的那样,它确实带有一个名为.done()的方法,该方法告诉我一个Music对象是否已经完成播放,但是如何在播放时测试它呢?
我目前创建了一个带按钮的JFrame和一个显示歌曲的Jlist,但据我所知,如果我尝试某种while循环来监听歌曲是否完成,我将无法使用其他按钮如停止,暂停等。
我正在考虑沿着这条线的某处(伪代码):
while(theSong.playing()){
if(theSong.done()){
playNext();
}
}
问题是当进入while循环时,我无法在程序中使用任何其他功能。如果有人想看一些示例代码,请告诉我!
Sindre M
答案 0 :(得分:0)
在与GUI相同的线程上运行此while
会使界面卡住。您可以使用SwingUtilities invokeAndWait方法实现所需的功能:
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
while(theSong.playing()) {
if(theSong.done()) {
playNext();
}
}
}
}