我正在使用JavaFX开发视频播放器。我正在从本地文件系统加载一个视频到JavaFX类Media。然后我想获得宽度和高度,以便我可以将场景的尺寸设置为该尺寸:
Media media = new Media(
"file:/D:/Videos/Cosmos/Cosmos.A.Space.Time.Odyssey.S01E02.HDTV.x264.PROPER-LOL.mp4"
);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
root.getChildren().add( mediaView);
Scene scene = new Scene(root, media.getWidth(), media.getHeight());
然而,当我运行此代码时,media.getWidth()和media.getHeight()都返回0.如何获取尺寸?
答案 0 :(得分:1)
媒体信息是异步获取的,因此在实例化类之后不一定立即可用。但是,如果该实例已与
MediaPlayer
相关联并且该播放器已转换为MediaPlayer.Status.READY
状态,则应提供所有信息。
当MediaPlayer处于READY状态时,该大小可用。最简单的方法是在播放媒体之前设置一个处理程序,它将在您的窗口上调用sizeToScene()
:
mediaPlayer.setOnReady(() -> stage.sizeToScene());
mediaPlayer.setAutoPlay(true);
// ...
Scene scene = new Scene(root);
答案 1 :(得分:0)
感谢@VGR,我意识到我只需要等待加载mediaPlayer:
mediaPlayer.setOnReady(new Runnable() {
@Override
public void run() {
// Add Pane to scene
Scene scene = new Scene(root, media.getWidth(), media.getHeight());
primaryStage.setScene(scene);
primaryStage.show();
}
});