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

时间:2017-10-11 20:44:38

标签: java swing jlayer

我正在开发一个需要背景音乐的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

任何人都可以帮我修理这段代码吗?

1 个答案:

答案 0 :(得分:2)

  

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

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

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

阅读Concurrency in Swing上的教程以获取更多信息。