Java jLayer GUI应用程序在播放音乐时冻结

Java jLayer GUI应用程序在播放音乐时冻结,java,swing,jlayer,Java,Swing,Jlayer,我正在从事一个需要背景音乐的Java项目,因此我使用jLayer(Java平台的MP3库)来提高项目的适用性和性能 我需要在JFileChooser的帮助下播放音乐,以便用户可以轻松地从菜单栏运行自己的音乐 但是每当我尝试运行任何随机音乐时,整个GUI应用程序都会冻结 谁能帮我修一下这个密码吗 每当我试图在“JFileChooser”的帮助下从菜单栏运行任意随机音乐时,整个GUI应用程序都会冻结 从侦听器执行的代码在事件调度线程(EDT)上执行。此线程负责响应事件并重新绘制GUI。如果执行长

我正在从事一个需要背景音乐的Java项目,因此我使用jLayer(Java平台的MP3库)来提高项目的适用性和性能

我需要在
JFileChooser
的帮助下播放音乐,以便用户可以轻松地从菜单栏运行自己的音乐

但是每当我尝试运行任何随机音乐时,整个GUI应用程序都会冻结

谁能帮我修一下这个密码吗

每当我试图在“JFileChooser”的帮助下从菜单栏运行任意随机音乐时,整个GUI应用程序都会冻结

从侦听器执行的代码在事件调度线程(EDT)上执行。此线程负责响应事件并重新绘制GUI。如果执行长任务(如播放音乐),GUI将无法响应事件

您需要在单独的
线程上启动音乐播放器。一种方法是使用
SwingWorker
,它提供了在使用Swing时非常有用的附加功能


有关更多信息,请阅读上的教程。

最有可能的原因是冻结任何GUI的同一原因-您正在阻止事件调度线程。这个问题是如此普遍,你应该能够找到关于这个主题的无穷无尽的问题-解决方案总是一样的,不要在EDT上做任何需要很长时间或以任何方式阻塞的事情。你使用的方法取决于你想要达到的目标。您可以滚动自己的
线程
或使用
SwingWorker
这是我的应用程序的代码片段
-不要发布代码的图像。当你问一个问题时,请贴一篇适当的文章来说明这个问题。@MadProgrammer谢谢你的回答实际上我现在对多线程和并发的概念还不太熟悉,你能解释一下我如何在Java中实现SwingWorker吗Application@camickr对不起,我下次一定会处理的time@ChetanNautiyal,
你能解释一下我如何在Java应用程序中实现SwingWorker吗?
——我17小时前已经给了你这个答案。阅读教程!!!