使用FXML在JavaFX中创建MediaView接收空指针异常

时间:2016-02-10 19:20:49

标签: java javafx fxml

这是我的控制器类:

package sample;

import javafx.fxml.FXML;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView; 

public class Controller {

    @FXML
    private MediaView mediaView;

    private Media mVideo;
    private MediaPlayer mPlayer ;



    public Controller(){
        karaokePlayer();
    }

    public void karaokePlayer(){
        String path = getClass().getResource("/video/TestVideo.mp4").toExternalForm();
        mVideo = new Media(path);
        mPlayer = new MediaPlayer(mVideo);
        mPlayer.setAutoPlay(true);
        mediaView.setMediaPlayer(mPlayer);
    }
}

这是我的FXML:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.media.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<AnchorPane fx:controller="sample.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <BorderPane layoutX="38.0" layoutY="39.0" prefHeight="322.0" prefWidth="524.0">
         <center>
            <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" />
         </center>
      </BorderPane>
   </children>
</AnchorPane>

我的问题是我在这一行得到一个空指针异常: mediaView.setMediaPlayer(mPlayer); 但是看着我的代码我不明白为什么空指针异常。我通过手动写出所有GUI代码来设置它,它似乎工作得很好。我已经在线查看了几个java FXML文档,并且不太明白为什么我会在这个实例中得到一个空指针。我的问题是为什么空指针异常?媒体播放器已创建并且不为null但是当我调用.setMediaPlayer()方法时,编译器会返回,就像它为空。

0 个答案:

没有答案