Java 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);
        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/

相关文章:

java - Java-如何使用库播放器播放音频?

java - 从 Java 代码中读取 SVN (Subclipse) 版本号

java - 在eclipse中启动Jboss时如何运行批处理作业?

java - Java中调用JTable.print()时是否可以设置左右边距的大小?

Java 可执行 .jar 文件无法播放外部资源中的 MP3 文件

java - 使用java播放多种声音并控制音量

java - 为什么 Java 在 While 循环中跳过我的 If 语句?

java - 对于 RxJava 中的每个

java - Java 组合框 Action 监听器

java - 自定义单元格编辑器无法容纳 Nimbus 外观中的文本