Как сделать StackPane с MediaView заполнить BorderPane в JavaFX
Привет всем, что я не могу понять, что не так с моим кодом. Я создаю очень простой медиаплеер. У меня есть BorderPane в качестве корневой сцены. Верхний узел - это меню, а нижний - панель стека. У меня есть StackPane, который содержит MediaView и панель инструментов. Я хочу сделать так, чтобы всякий раз, когда пользователь открывает новый файл, размер StackPane изменялся до новой ширины MediaView. Высота фиксирована. То, как я понимаю, как BorderPane определяет свой размер (из чтения документов), - это предпочтительные размеры детей. StackPane также определяет свой размер от дочерних элементов. Вот что говорят доктора: изменяемый размер
Родитель стека будет изменять размер стека в пределах диапазона изменения размера стека во время макета. По умолчанию в стеке этот диапазон вычисляется на основе его содержимого, как показано в таблице ниже.
минимум:
ширина: левая / правая вставки плюс наибольшая из минимальных детских ширины.
высота: верх / низ вставки плюс самая большая из детских минимальных высот.
предпочтительным:
ширина: левый / правый вкладыши плюс наибольшая из детских предпочтительных ширин.
высота: верх / низ вставки плюс самая большая из детских высот pref.
Проблема в том, что вы не можете установить минимальный, максимальный или предпочтительный размер в 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);
Снимок экрана с инициализацией панели
Скриншот того, как это должно выглядеть
Любая помощь или предложения с благодарностью. Спасибо!