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

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


最低:

width:左/右插图加上孩子最小宽度的最大值 .

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

首选:

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

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