嘿,我似乎无法弄清楚我的代码有什么问题。我正在构建一个非常简单的媒体播放器。我有一个 BorderPane 作为根场景。顶部节点是 Menu,底部是 StackPane。我有一个包含 MediaView 和工具栏的 StackPane。我想这样做,每当用户打开一个新文件时,StackPane 都会调整为 MediaViews 的新宽度。高度是固定的。我理解 BorderPane 如何定义其大小(通过阅读文档)的方式是孩子们的首选大小。StackPane 也从其子级定义其大小。这是文档所说的: Resizable Range
堆栈窗格的父级将在布局期间在堆栈窗格的可调整大小范围内调整堆栈窗格的大小。默认情况下,堆栈窗格根据下表中列出的内容计算此范围。
最低限度:
宽度:左/右插图加上孩子的最大最小宽度。
高度:顶部/底部插图加上孩子的最大最小高度。
首选:
宽度:左/右插图加上最大的儿童首选项宽度。
高度:顶部/底部插图加上最大的儿童首选高度。
问题是您不能在 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);
非常感谢任何帮助或建议。谢谢!