如何使用MediaView使StackPane填充JavaFX中的BorderPane

时间:2017-11-08 00:06:17

标签: java javafx borderpane

嘿,我似乎无法弄清楚我的代码是什么问题。我正在构建一个非常简单的媒体播放器。我有一个BorderPane作为根场景。顶部节点是Menu,底部是StackPane。我有一个StackPane,它包含MediaView和工具栏。我希望每当用户打开一个新文件时,StackPane将调整大小为MediaViews的新宽度。高度是固定的。我理解BorderPane如何定义其大小(从阅读文档)的方式是孩子们的pref大小。 StackPane也从它的子节点定义它的大小。以下是文档的说法: 可调整范围

stackpane的父级将在布局期间调整stackpane的可调整大小范围内的堆栈窗格。默认情况下,stackpane会根据其内容计算此范围,如下表所示。

最小

宽度:左/右插图加上儿童最小宽度的最大值。

高度:顶部/底部插入加上儿童最小高度的最大值。

优选的:

width:左/右插图加上子节点宽度的最大值。

高度:顶部/底部插入加上儿童的最高高度。

问题是您无法在MediaView上设置最小,最大或首选大小,只能设置适合的高度或宽度。我怎样才能计算尺寸以使其正确匹配? 这是我目前的代码

// Initially set bottom to an empty pane
nullPane.setPrefSize(600,400);
mainPane.setTop(menuBar);
mainPane.setBottom(nullPane);
stackPane.getChildren().addAll(mediaView, toolBar);
mediaView.setFitHeight(mediaHeight); // mediaHeight = 500
mediaView.setPreserveRatio(true);
mediaView.setMediaPlayer(mediaPlayer);
mainPane.getChildren().remove(nullPane);
mainPane.setBottom(stackPane);

A screenshot of how the pane is initializing

A screenshot of how it should look

非常感谢任何帮助或建议。谢谢!

0 个答案:

没有答案