目前我在运行时遇到动态加载的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的模式,它完美调整大小)。这是一种错误的方法还是有一种简单的方法,显然我没有找到?
提前致谢!
答案 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文件中不使用固定宽度或高度变量。