我试图播放WAV片段并遇到一些问题。以下是我使用的代码:
public class NewClass {
private File soundFile = new File("/Project/src/model/soundfile.wav");
public NewClass() {
JLabel playArea = new JLabel();
playArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
AudioClip clip = null;
try {
clip = Applet.newAudioClip(soundFile.toURI().toURL());
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
clip.play();
});
}
我在src文件夹中有一个单独的文件夹(模型),我有任何图像或在这种情况下保存WAV文件(我知道我的MVC不对,但这是另一天的问题)。它运行没有任何例外,但只是没有发挥任何作用。我在前一段时间写过的另一个项目中使用过相同的代码snippit并且它工作正常,所以我一直坚持为什么它现在搞砸了。有什么想法吗?
答案 0 :(得分:0)
所以我切换到了Clip类而不是AudioClip并让它运行起来。这是为我做的代码:
File pop;
try {
pop = new File(StartView.class.getResource("/model/pop.wav")
.toURI());
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
void playSound(File soundIn) { // Use pop as the input argument
File soundFile = soundIn;
AudioInputStream sound = null;
try {
sound = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataLine.Info info = new DataLine.Info(Clip.class,
sound.getFormat());
clip = null;
try {
clip = (Clip) AudioSystem.getLine(info);
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
clip.open(sound);
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clip.start();
}
我不能说为什么以前的代码不起作用,但切换到Clip似乎已经完成了这个伎俩。