如何用JavaFX播放声音

use*_*445 9 java media audio javafx

我刚开始使用JavaFX.我知道它的基础知识是如何工作的.我尝试使用媒体和媒体播放器类播放声音,称为"sound.mp3".我在eclipse中编程,我在src文件夹中有声音文件,与"(默认包)"相同的文件夹.这是我的代码:

import javafx.scene.media.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");

        String ssound = "sound.mp3";
        Media sound = new Media(ssound);
        MediaPlayer mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.play();

        StackPane root = new StackPane();
        primaryStage.setScene(new Scene(root, 800, 450));
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么.

以下是来自控制台的错误消息:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
    at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.IllegalArgumentException: uri.getScheme() == null!
    at com.sun.media.jfxmedia.locator.Locator.<init>(Unknown Source)
    at javafx.scene.media.Media.<init>(Unknown Source)
    at Main.start(Main.java:16)
    at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) ... 1 more
Run Code Online (Sandbox Code Playgroud)

ana*_*aik 15

只是对其他答案所说的工作汇编:

String musicFile = "StayTheNight.mp3";     // For example

Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)

将音乐文件添加到Project文件夹中,旁边binsrc.

任何IDE都会提示您添加以下内容:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import java.io.File;
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.


小智 5

mApplause = new AudioClip(this.getClass().getResource("/sounds/applause.mp3").toExternalForm());
Run Code Online (Sandbox Code Playgroud)

所以这就是我使用过的并且有效的,我知道这可能不再重要了,但是由于它在我正在寻找其他东西的同时在我的google搜索中得到了,我想我会回答的。:)

意思是toExternal Form,它告诉您形成路径文件的url形式。


Kis*_*ine 3

这是我目前正在使用的:

Media hit = new Media(new File(soundFilename).toURI().toString());
Run Code Online (Sandbox Code Playgroud)