2016-04-24 4 views
2

Я пытаюсь создать приложение, где, когда я нажимаю JButton, он воспроизводит песню. Я уже понял, как указать JButtons. Однако я не могу найти способ воспроизвести звук. Я не буду использовать 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 у меня есть папка «Песни». Я изменил путь к файлу на это: /Песни/

Затем я попытался вызвать функцию с помощью файла WAV:

playSound("song.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

Смежные вопросы