fxml嵌套另外多个fxml的方法

NO:1

直接在需要嵌套的模块下写

优点:不用做多余的注释,直接拉过来就能用,和h5页面的include()方法相同。

缺点:要在外层做一个空间,比如AnchorPane这样的,去调整内嵌进来的页面的位置。

NO.2

这种方法就略微复杂了一些

使用该元素允许您向现有元素添加内容,需要一种方法来获取应该用作根元素的节点的引用,并将其传递给FXMLLoader加载第二个fxml时。可以使用命名空间来使用fx:id属性获取该元素:

@Override
public void start(Stage primaryStage) throws IOException {
    FXMLLoader outerLoader = new FXMLLoader(getClass().getResource("outer.fxml"));

    Scene scene = new Scene(outerLoader.load());

    URL inner = getClass().getResource("inner1.fxml");
    // URL inner = getClass().getResource("inner2.fxml");

    FXMLLoader innerLoader = new FXMLLoader(inner);

    // get insertion point from outer fxml
    innerLoader.setRoot(outerLoader.getNamespace().get("insertionPoint"));

    innerLoader.load();

    primaryStage.setScene(scene);
    primaryStage.show();
}

outer.fxml






    
        
    

inner1.fxml







    

inner2.fxml







    

优点:对于内嵌进入的页面可以进行详细的设置

缺点:调用页面过程较为复杂

 

你可能感兴趣的:(javafx,java,javafx)