我正在尝试创建一个应用程序,当我点击一个JButton时,它会播放一首歌。我已经知道如何指定JButtons。但是,我似乎无法找到播放声音的方法。我不会使用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");
然后我得到一个null错误。我相信这是因为它无法识别文件路径。我的问题的答案很可能是非常明显的,但不知怎的,我无法找到它。
答案 0 :(得分:0)
将song.wav放在Main类的同一个文件夹中,然后getResourceAsStream会找到它。
如果你正在使用eclipse,它可以自动将.wav文件复制到输出文件夹。
您可能希望在某个不同的Java包上创建一个类,这样您的入口点就不会受到资产的污染。