即使我的代码基于一个工作例子,我的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声音。我的Button有一个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类的一部分,它是我的Button的一部分。
答案 0 :(得分:0)
我不确定代码的外观但你导入了正确的库来播放音频吗?