即使我的代碼基於一個工作示例,我的wav聲音也不會播放。我不知道我的錯誤在哪裏撒謊。我發現這個代碼例如在互聯網上:Java AudioClip不工作
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類的一部分,它是我的Button的一部分。
嘗試使用基於'Clip'的Java聲音,如[info。頁面(http://stackoverflow.com/tags/javasound/info)。 –
謝謝,但爲什麼我的上面的代碼在播放blabla.wav聲音失敗? –
爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –