2016-04-24 93 views
2

我試圖製作一個應用程序,當我點擊一個JButton時,播放一首歌曲。我已經想出瞭如何指定JButton。但是,我似乎無法找到播放聲音的方法。我不打算使用sun.audio,因此我看到的許多線程都無法工作。我發現許多低質量的答案。最終,我解決了這個代碼。查找播放聲音的文件

public static synchronized void playSound(final String url) { 
    new Thread(new Runnable() { 
public void run() { 
    try { 
     Clip clip = AudioSystem.getClip(); 
     AudioInputStream inputStream = AudioSystem.getAudioInputStream(
     Main.class.getResourceAsStream("/path/to/sounds/" + url)); 
     clip.open(inputStream); 
     clip.start(); 
     } catch (Exception e) { 
     System.err.println(e.getMessage()); 
     } 
    } 
    }).start(); 
} 

在我的src文件夾中,我有一個名爲「Songs」的文件夾。我改變的文件路徑是: /歌/

然後,我打過電話使用wav文件的功能:

playSound("song.wav"); 

然後我得到一個空的錯誤。我相信這是因爲它無法識別文件路徑。我的問題的答案很可能非常明顯,但不知何故,我無法找到它。

回答

0

將song.wav放在Main類的相同文件夾中,然後getResourceAsStream會找到它。

如果您使用的是eclipse,它可以自動將.wav文件複製到輸出文件夾。

您可能想要在某個不同的Java包上創建一個類,以便您的入口點不受資產污染。

該閱讀可能會對您有所幫助:http://www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-resource-loading