Wiedergeben von audio mithilfe von JavaFX MediaPlayer in einer normalen Java-Anwendung?
Brauche ich, um in der Lage zu spielen Audio-Dateien (MP3 /Wav), die in einem normalen Java-Projekt. Ich würde lieber mit dem neuen JavaFX MediaPlayer eher als JMF. Ich schrieb einige code, um dies zu testen:
public void play()
{
URL thing = getClass().getResource("mysound.wav");
Media audioFile = new Media( thing.toString() );
try
{
MediaPlayer player = new MediaPlayer(audioFile);
player.play();
}
catch (Exception e)
{
System.out.println( e.getMessage() );
System.exit(0);
}
}
Wenn ich diesen starte, bekomme ich die exception: Toolkit nicht initialisiert
Ich, dass dies etwas hat zu tun mit den JavaFX-thread. Meine Frage ist, wie kann ich dieses Problem lösen? Brauche ich zum erstellen einer JavaFX-Panel nur um zu spielen, einige audio-Dateien im hintergrund meine normale app, oder gibt es eine andere Möglichkeit?
Edit: Stacktrace:
java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:121)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:116)
at javafx.application.Platform.runLater(Platform.java:52)
at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:445)
at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:360)
at javaapplication6.JavaApplication6.play(JavaApplication6.java:23)
at javaapplication6.JavaApplication6.main(JavaApplication6.java:14)
- Ist die Linie 14, die
Media audioFile = new Media( thing.toString() );
? - Nein, das ist in der main-Methode den Aufruf der
play()
Methode. Zeile 23 ist diesem;MediaPlayer player = new MediaPlayer(audioFile);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden JFXPanel und vorsichtig sein, um nur die Verwendung von JavaFX-Objekte auf den JavaFX-thread und nach dem JavaFX-system richtig initialisiert wurde.
JavaFX ist normaler Java der die Frage ein bisschen verwirrend, aber ich denke mal du meinst Swing.
Hier ist ein Beispiel-audio-player, der gestartet wird . Im Beispiel wird davon ausgegangen, dass es eine Reihe von mp3-Dateien in den Standard-öffentliche Probe im music-Ordner für Windows 7 C:\Users\Public\Music\Sample Musik) und spielt jede Datei in der Reihenfolge.
Technisch, Swing baut keine Jar-Dateien, aber die jar von javafx packaging-Befehle tun.
Wenn Ihre app enthält JavaFX, dann ist es am besten, um verwenden Sie die JavaFX packaging tools. Ohne Sie, müssen Sie möglicherweise einige Probleme bei der Bereitstellung Probleme, da die Java-runtime-jar - (jfxrt.jar) ist nicht automatisch auf dem java-boot-classpath für jdk7u7. Können Benutzer manuell hinzufügen, um Ihre runtime-classpath, aber es könnte sein, ein bisschen Schmerz. In zukünftigen jdk-Versionen (vielleicht jdk7u10 oder jdk8), jfxrt.jar auf dem classpath. Selbst dann, die Verwendung des JavaFX packaging tools wäre immer noch empfohlen, da es der beste Weg, um sicherzustellen, dass Ihr Paket Bereitstellung in den meisten kompatiblen Art und Weise.
Den SwingInterop NetBeans-Projekt ist ein Beispiel NetBeans-Projekt was nutzt JavaFX-Bereitstellungstools für ein Swing-Projekt einbetten von JavaFX Komponenten. Quelle für SwingInterop ist Teil der JDK 7 und JavaFX-Demos und Beispiele download.