我正在尝试制作一个应用程序,当我单击JButton时,它会播放一首歌曲。我已经弄清楚了如何指定JButton。但是,我似乎找不到一种播放声音的方法。我不会使用sun.audio,所以我看过的许多线程都没有用。我发现许多低质量的答案。最终,我决定使用此代码。
public static synchronized void playSound(final String url) {
new Thread(new Runnable() {
public void run() {
try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(
Main.class.getResourceAsStream("/path/to/sounds/" + url));
clip.open(inputStream);
clip.start();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}).start();
}
在src文件夹中,我有一个名为“歌曲”的文件夹。我将文件路径更改为:/ Songs /
然后,我尝试使用wav文件调用该函数:
playSound("song.wav");
然后我得到一个空错误。我相信这是因为它无法识别文件路径。我的问题的答案很可能很明显,但是我却找不到。
将song.wav放在Main类的同一文件夹中,然后getResourceAsStream会找到它。
如果您使用的是eclipse,它将自动将.wav文件复制到输出文件夹。
您可能想在一些不同的Java包上创建一个类,以便您的入口点不会被资产污染。
这种阅读可能对您有帮助:http : //www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-资源加载
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句