我正在开发一个需要背景音乐的Java项目,因此我使用jLayer(Java平台的MP3库)来提高项目的适用性和性能。
我需要在JFileChooser
的帮助下播放音乐,以便用户可以轻松地从菜单栏中播放自己的音乐。
但是当我试图运行任何随机音乐时,整个GUI应用程序都会冻结。
Here's the code snippet of my Application
This is the Image of the Menubar where "Choose your own Music" is added as the Menu Item
任何人都可以帮我修理这段代码吗?
答案 0 :(得分:2)
当我试图在" JFileChooser"的帮助下尝试从菜单栏运行任何随机音乐时,整个GUI应用程序都会冻结。
从监听器执行的代码在Event Dispatch Thread (EDT)
上执行。此线程负责响应事件并重新绘制GUI。如果您执行长任务(如播放音乐),则GUI无法响应事件。
您需要在单独的Thread
上启动音乐播放器。一种方法是使用SwingWorker
,它提供了在使用Swing时有用的附加功能。
阅读Concurrency in Swing上的教程以获取更多信息。