我正在尝试使用摇摆制作一个MP3播放器,当我播放一首歌时,我的jbutton播放仍然停留在我的应用程序中,我无法按任何其他按钮。我试图使用线程但它没有用,这是我的游戏功能代码。
ToList()
答案 0 :(得分:1)
当我播放一首歌时,我的jbutton播放仍然无法停止,我无法按下我应用中的任何其他按钮
SwingUtilities.invokeLater(fplay);
invokeLater(...)方法将代码添加到Event Dispatch Thread (EDT)
的末尾。所以这意味着音频仍在EDT
上执行,GUI无法响应事件。
相反,您需要启动单独的Thread
,因此音频不会阻止GUI响应事件。
因此,您希望将Runnable
传递给Thread
并启动Thread
。
阅读Concurrency上Swing教程中的部分,了解有关EDT的更多信息。
我尝试使用线程并且它没有工作
嗯,这是正确的解决方案。我无法猜出你做错了什么,虽然你永远不应该有一个空的挡块。如果你没有显示任何内容,你怎么知道错误是什么?
Concurrency
上的教程还介绍了如何使用SwingWorker,这可能是一个更好的解决方案。