这是我在控制器中的功能:
@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);