从控制器加载不同的 FXML 文件

Loading different FXML files from a controller

我深表歉意,因为我知道这个问题本质上有点宽泛。我想要实现的是能够在满足特定条件时加载不同的 FXML 文件(位于不同的包中),例如按下按钮或满足特定条件时。到目前为止,我已经成功地在按下按钮时加载了一个文件。

@FXML
private AnchorPane rootPane;

@FXML
private Button btn;


@FXML
private void loadLoginWindow(javafx.event.ActionEvent event) throws IOException {

    AnchorPane pane = FXMLLoader.load(getClass().getResource("login/MainWindow.fxml"));

    rootPane.getChildren().setAll(pane);
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
} 

它工作正常,但只有一个按钮和一个处理程序,一旦添加另一个它就停止工作,似乎当时只有一个可以工作。很明显我遗漏了很多重要信息,但我看过的每个教程都没有解决这一点,因为它们甚至没有到达那里(它们都围绕一个文件,或者它们依赖于隐藏和显示来自同一文件的窗格)

有没有人有好的教程或综合指南来做这类事情?

提前致谢。

FXML 文件中的控制器 link 可能不正确。即使文件位置可能不存在,应用程序仍会构建。

<AnchorPane id="AnchorPane" fx:controller="main.MainController">

fx:controller中的路径需要正确。

干杯!