我对 jLayer 有疑问。我有一个带有开始播放歌曲代码的按钮:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Player prehravac;
FileInputStream buff = new FileInputStream(Okno.filename);
prehravac = new Player(buff);
prehravac.play();
if (prehravac != null) {
prehravac.close();
this.dispose();
}
} catch(Exception e) {
}
}
当我单击此按钮时,它开始播放歌曲,但整个应用程序卡住并且我无法单击任何内容。当歌曲结束时,没关系,我可以再次点击其他组件。
有人可以帮我吗? :) 谢谢
最佳答案
这是因为歌曲播放发生在与 GUI 相同的线程中,或者更具体地说是 EDT。 .因此,当歌曲正在播放时,GUI 不响应。要解决此问题,请执行以下操作:
new Thread(){
run(){
//Your play code
}
}.start();
这将在单独的线程中播放您的内容。但是,您必须考虑到,由于 GUI 是响应式的,您可以在歌曲仍在播放时开始播放歌曲。
有关详细信息,请参阅 this
关于Java jLayer 应用程序在播放歌曲时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013486/