2016-04-24 8 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」というフォルダがあります。私はこれにファイルパスを変更:

playSound("song.wav"); 

そして、私がnullエラーを取得する: /曲/

はその後、私はwavファイルを使用して関数を呼び出してみました。これは、ファイルパスを認識しないためです。私の問題への答えは非常に明白ですが、何とか私はそれを見つけることができません。

答えて

0

あなたのメインクラスの同じフォルダにsong.wavを置くと、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

関連する問題