Wie kann man diverse Ressourcen wie Bild- oder Sounddateien laden auch wenn sie sich innerhalb einer *.jar befinden?
In der Methode play()
wird ein sog. ClassLoader
verwendet, um eine Ressource, in diesem Falle eine Sound-Datei, zu
laden. Die Methode getClassLoader()
ermittelt die
Referenz, die die ladende Klasse auf den ClassLoader
besitzt. Dieser stellt mit getRessource()
eine Methode
bereit, die die gewünschten Daten innerhalb des Classpath
sucht. Sie bekommt hierzu einen Pfad als String übergeben, der
relativ zum Wurzelverzeichnis des Classpath angegeben werden muss.
Package der ladenden Klasse: | <Classpath-Wurzelverzeichnis>de.yourwebs.test |
Sounddatei: | <Classpath-Wurzelverzeichnis>sound/mysound.wav |
notwendige Pfadangabe: | sound/mysound.wav |
Das Ergebnis ist ein URL
-Objekt, das der statischen
Methode newAudioClip()
der Klasse Applet
übergeben wird. Sie liefert ein AudioClip
-Objekt,
das über dessen Methode play()
abgespielt wird.
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
public class SoundTest {
public void play() {
String path = "sound/applauselong.wav";
URL url = getClass().getClassLoader().getResource(path);
AudioClip sound = Applet.newAudioClip(url);
sound.play();
}
public static void main(String[] args) {
SoundTest st = new SoundTest();
st.play();
}
}
Siehe zu diesem Thema auch den Artikel 'Bilder laden'.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.