这是我的控制器类:
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()方法时,编译器会返回,就像它为空。