Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jLayer应用程序在播放歌曲时冻结_Java_Swing_Jlayer - Fatal编程技术网

Java jLayer应用程序在播放歌曲时冻结

Java jLayer应用程序在播放歌曲时冻结,java,swing,jlayer,Java,Swing,Jlayer,我对jLayer有问题。我有一个按钮,上面有开始歌曲的代码: private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { try { Player prehravac; FileInputStream buff = new FileInputStream(Okno.filename); prehravac = new Player(buff);

我对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在同一线程中进行,或者更具体地说是在GUI中进行。因此,当播放歌曲时,GUI不响应。要解决此问题,请执行以下操作:

new Thread(){
  run(){
    //Your play code
  }
}.start();
这将在单独的线程中播放您的内容。但是,您必须注意,由于GUI是有响应的,所以您可以在歌曲仍在播放时启动歌曲


有关更多信息,请参见这是因为歌曲播放与GUI在同一线程中进行,或者更具体地说是GUI。因此,当播放歌曲时,GUI不响应。要解决此问题,请执行以下操作:

new Thread(){
  run(){
    //Your play code
  }
}.start();
这将在单独的线程中播放您的内容。但是,您必须注意,由于GUI是有响应的,所以您可以在歌曲仍在播放时启动歌曲


有关更多信息,请参阅事件调度线程上的任务必须快速完成;否则,未处理的事件将备份,用户界面将变得无响应。

事件调度线程上的任务必须快速完成;如果没有,未处理的事件将备份,用户界面将变得无响应。

这似乎是在EDT中执行的,因此这就是为什么冻结到歌曲完成,尝试使用SwingWorker执行此操作。这似乎是在EDT中执行的,这就是为什么冻结到歌曲完成,尝试使用SwingWorker执行此操作