2013-06-04 49 views
0

即使我的代碼基於一個工作示例,我的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的一部分。

+0

嘗試使用基於'Clip'的Java聲音,如[info。頁面(http://stackoverflow.com/tags/javasound/info)。 –

+0

謝謝,但爲什麼我的上面的代碼在播放blabla.wav聲音失敗? –

+0

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

0

我不確定看起來代碼的外觀,但你導入正確的庫來播放音頻?

+0

是的,一切都正確導入,我不會在編譯時出錯。 –

+0

我也確保它在我的WavReader playSound()方法中得到。 我可以看到的唯一區別是我的AudioClip屬性不是任何JFrame的一部分,而是我的WavReader類的一部分,這是我Button的一部分。如果這是我不知道爲什麼的原因。 –