Javafx mediaViewer / mediaPlayer выбрасывает java.lang.reflect.InvocationTargetException и java.lang.NullPointerException - PullRequest
0 голосов
/ 18 декабря 2018

Итак, у меня есть этот код здесь:

package sample;

import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;

import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable {

    private MediaPlayer mediaPlayer;

    @FXML
    private MediaView mediaView;

    private String filePath;

    @FXML
    private void handleButtonAction (ActionEvent event){
        FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Select a File (*.mp4)", "*.mp4");
        fileChooser.getExtensionFilters().add(filter);
        File file = fileChooser.showOpenDialog(null);
        filePath = file.toURI().toString();

        if(filePath != null) {
            Media media = new Media(filePath);
            mediaPlayer = new MediaPlayer(media);
            mediaView.setMediaPlayer(mediaPlayer);
            DoubleProperty width = mediaView.fitWidthProperty();
            DoubleProperty hight = mediaView.fitHeightProperty();

            width.bind(Bindings.selectDouble(mediaView.sceneProperty(), "width"));
            hight.bind(Bindings.selectDouble(mediaView.sceneProperty(), "hight"));

            mediaPlayer.play();
        }
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }
}

И вы можете запустить его.Но если вы попытаетесь открыть файл с помощью кнопки openfile, видео не появится, и я просто получу список исключений.Я бы не знал, если это только я, или я сделал что-то не так.

NullPointerExeption находится в строке 38, доверяя IntelliJ, который я использую.

Caused by: java.lang.NullPointerException
 at sample.Controller.handleButtonAction(Controller.java:38))

Так что-тос mediaPlayer / mediaViewer тогда?(MediaView.setMediaPlayer (MediaPlayer);)

1 Ответ

0 голосов
/ 18 декабря 2018

Так что я забыл сделать эту строку (или добавить ее через SceneBuilder)

<MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" />
...