2015-10-08 43 views
0

我想制作一个简单的应用程序,它会在启动时自动从URL播放歌曲。我知道如何使用mediaPlayer按按钮播放歌曲,但我不知道如何自动播放它?JavaFX如何在启动时播放歌曲

这是我initPlayer,我在我ControllerplayButtonFired方法的内部使用方法:

public void startup(){ 
    String URL="http://download.oracle.com/otndocs/javafx/JavaRap_Audio.mp4"; 
    initPlayer(URL); 
} 


private void initPlayer(String uri) 
{ 

    if(uri==null) 
    { 
     return; 

    } 
    Media media = new Media(uri); 
    mediaPlayer = new MediaPlayer(media); 
    mediaPlayer.setOnReady(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      enableControls(); 
     } 
    }); 

这是我的主类:

public class MainGui extends Application { 

@Override 
public void start(Stage primaryStage) { 

    Parent root = null; 

    try { 
     root = FXMLLoader.load(getClass().getResource("MediaPlayer.fxml")); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 




    Scene scene = new Scene(root); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 


} 

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


} 
+0

在JavaFX的'public void start(Stage primaryStage)'函数内添加开始播放歌曲的代码。 ('mediaPlayer.play()'开始播放一首歌曲) – showp1984

+0

好的,但是“public void start(Stage primaryStage)”方法被放置在另一个类中(一个JavaFX主类),并且上面的代码被放置在我的控制器类中。所以我不能在那里使用initPlayer(String uri)方法。 – raz

+0

你可以通过在Main类中持有对控制器的引用来解决这个问题,或者(我更喜欢自己)在Controller中创建一个'public static void startup()'函数并从JavaFX启动函数调用它。这样,您可以在控制器中的新功能中添加启动时应执行的所有操作。 (这比在Main类中持有x引用更干净) – showp1984

回答

0

添加您的代码开始播放JavaFX的public void start(Stage primaryStage)函数中的歌曲。 (mediaPlayer.play()开始播放一首歌曲)

编辑:

你更新的代码缺少从public static void startup()static。你的内容如下:public void startup()。添加它并从主类中调用它Controller.startup();,最好在primaryStage.show()以下;