首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JavaFX播放声音

如何使用JavaFX播放声音
EN

Stack Overflow用户
提问于 2014-04-22 01:20:46
回答 6查看 54.9K关注 0票数 14

我刚开始使用JavaFX。我知道它的基本原理。我尝试使用媒体和mediaplayer类来播放一种名为"sound.mp3“的声音。我在eclipse中编程,并且我在src文件夹中有声音文件,与"(default package)“文件夹相同。下面是我的代码:

代码语言:javascript
运行
复制
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();
    }
}

请告诉我我哪里做错了。

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

代码语言:javascript
运行
复制
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
EN

回答 6

Stack Overflow用户

发布于 2015-04-09 11:58:08

只是对其他答案的有效汇编:

代码语言:javascript
运行
复制
String musicFile = "StayTheNight.mp3";     // For example

Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();

将音乐文件添加到您的项目文件夹中,与binsrc并列。

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

代码语言:javascript
运行
复制
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import java.io.File;

就像一种护身符。

票数 28
EN

Stack Overflow用户

发布于 2016-03-22 03:29:28

代码语言:javascript
运行
复制
mApplause = new AudioClip(this.getClass().getResource("/sounds/applause.mp3").toExternalForm());

这就是我使用的东西,它起作用了,我知道它可能已经无关紧要了,但当我在寻找其他东西的时候,它出现在我的谷歌搜索中,我想我应该回答它。:)

这意味着它告诉它形成路径文件的url形式的toExternal形式。

票数 9
EN

Stack Overflow用户

发布于 2014-07-10 23:49:29

这就是我目前使用的:

代码语言:javascript
运行
复制
Media hit = new Media(new File(soundFilename).toURI().toString());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23202272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档