即使我的代码基于有效的示例,我的wav声音也不会播放。我不知道我的错误在哪里。我在互联网上发现了以下代码示例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
class Testing extends JFrame implements ActionListener
{
JButton btn = new JButton("Play Sound");
File wavFile = new File("c:\\Windows\\media\\ding.wav");
AudioClip sound;
public Testing()
{
setSize(300,100);
setLocation(400,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel jp = new JPanel();
btn.addActionListener(this);
jp.add(btn);
getContentPane().add(jp);
pack();
try{sound = Applet.newAudioClip(wavFile.toURL());}
catch(Exception e){e.printStackTrace();}
}
public void actionPerformed(ActionEvent ae){sound.play();}
public static void main(String args[]){new Testing().setVisible(true);}
}
它工作正常。我创建了一个WavReader类,它将加载AudioClip声音。我的按钮具有WavReader属性。我想做的是通过Button的MouseEnetered事件播放WavReader声音。这是我的WavReader类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
public class WavReader {
File wavFile;
public AudioClip sound;
public WavReader(String file) {
wavFile = new File(file);
try {
sound = Applet.newAudioClip(wavFile.toURL());
}
catch(Exception e) {
e.printStackTrace();
}
}
public void playSound() {
sound.play();
}
public void stopSound() {
sound.stop();
}
}
这是我的个性化按钮的一部分:
public class ButtonMenu extends JButton{
public ButtonMenu() {
private WavReader reader = new WavReader("blabla.wav");
addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
setForeground(Color.red);
reader.playSound();
}
public void mouseExited(MouseEvent e) {
setForeground(Color.white);
reader.stopSound();
}
} // end MouseAdaptater
); // end MouseListener
}
}
运行时没有错误,但是我的声音不会播放。你能告诉我做错了什么吗?
我可以看到的唯一区别是,这里的AudioClip属性不是任何JFrame的一部分,而是WavReader类的一部分,而WavReader类是Button的一部分。
最佳答案
我不确定代码的外观,但是您是否导入了正确的库来播放音频?