Ширина и высота динамически загружаемого fxml

В настоящий момент у меня проблема с динамически загружаемыми файлами FXML во время выполнения. Как только они будут добавлены в панель, они не будут изменять размер, чтобы использовать полный вид и высоту этой панели.

Я использую этот метод для загрузки FXML в свою панель:

public void showContentPane(String sURL){
    //1. sURL can be something like "/GUI/home/master/MasterHome.fxml"
    //2. getContentPane() returns following object: Pane pContent
    try {
        URL url = getClass().getResource(sURL);

        getContentPane().getChildren().clear();
        Node n = (Node) FXMLLoader.load(url, ResourceBundle.getBundle("src.bundles.bundle", getLocale()));

        getContentPane().getChildren().add(n);
    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    }
}

FXML загружается и работает как следует, однако я замечаю, что FXML (добавленный как Node в этом случае) не изменяется, чтобы использовать полную высоту и ширину области содержимого (если я открою FXML в режиме предварительного просмотра с помощью Scene Builder он отлично изменяется). Это неправильный подход или есть простой способ, которого я явно не нашел?

Спасибо заранее!

Ответ 1

Я скорректировал код с ключом, который дал мне Энди. Я изменил объект pContent на AnchorPane вместо панели. Метод, который работает ниже:

public void showContentPane(String sURL){
    //1. sURL can be something like "/GUI/home/master/MasterHome.fxml"
    //2. getContentPane() returns following object: AnchorPane pContent
    try {
        URL url = getClass().getResource(sURL);

        getContentPane().getChildren().clear();

        //create new AnchorPane based on FXML file
        AnchorPane n = (AnchorPane) FXMLLoader.load(url, ResourceBundle.getBundle("src.bundles.bundle", getLocale()));

        //anchor the pane
        AnchorPane.setTopAnchor(n, 0.0);
        AnchorPane.setBottomAnchor(n, 0.0);
        AnchorPane.setLeftAnchor(n, 0.0);
        AnchorPane.setRightAnchor(n, 0.0);

        getContentPane().getChildren().add(n);
    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    }
}

Подсказка: убедитесь, что в загруженном файле FXML вы не используете переменные фиксированной ширины или высоты.