绑定动态加载的fxml的宽度和高度

时间:2013-01-10 19:24:31

标签: binding javafx-2 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(在这种情况下作为节点添加)没有调整大小以使用内容窗格的完整高度和宽度(如果我在预览中打开FXML)使用Scene Builder的模式,它完美调整大小)。这是一种错误的方法还是有一种简单的方法,显然我没有找到?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我用安迪给我的线索调整了代码。我将pContent对象更改为AnchorPane而不是Pane。工作方式如下:

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文件中不使用固定宽度或高度变量。