这是我在控制器中的功能:

@FXML
private MediaView mediaView;


在按下手柄按钮的方法中,我得到了filechooser:

   File file = fileChooser.showOpenDialog(null);

    if(file != null){
        initPlayer(file.toURI().toString());
    }


这是initPlayer方法:

private void initPlayer (String uri) {
        if (uri == null)
            return;
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer = null;
        }

        Media media = new Media(uri);
        mediaPlayer = new MediaPlayer(media);
        mediaPlayer.setAutoPlay(true);
        mediaView = new MediaView(mediaPlayer);
        mediaPlayer.setOnReady(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
            }
        });
    }


这是我在场景生成器中创建的视图代码的一部分:

<Pane layoutX="80.0" layoutY="14.0" prefHeight="480.0" prefWidth="640.0">
          <MediaView fx:id="mediaView" fitHeight="480.0" fitWidth="640.0" />
        </Pane>


选择文件时,我听到声音,但看不到视频。此代码有什么问题?我缺少什么?

最佳答案

MediaView实例由FXMLLoader创建,并在加载FXML文件时放置在Pane中。

您无需创建新的MediaView,并且在创建时不会将其附加到场景中,这就是为什么看不到任何内容的原因。

代替:

  mediaView = new MediaView(mediaPlayer);


写:

 mediaView.setMediaPlayer(mediaPlayer);

08-05 21:02