Javafx,场景交换

Javafx, SceneSwaping

我有一个管理 4 个 FXML 文件的应用程序,其工作方式如下:您按下布局上的下一步按钮,然后加载另一个包含另一个 FXML 文件的场景。你按下另一个按钮等等。那是一个场景交换训练应用程序。 一切正常,直到我尝试加载与其他(AnchorPane)具有不同顶部布局(StackPane)的最后一个(第四个)FXML 文件。 我得到异常:java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

这是用于将 FXML 文件与 AnchorPane 顶部布局交换的代码,但当我尝试使用 StackPane 顶部布局加载 FXML 文件时抛出异常。

private void buttGoToWindow3Action(ActionEvent event) throws IOException{
    Parent window3;
    window3 = (StackPane)FXMLLoader.load(getClass().getResource("/ScenePackage/FXMLWindow3.fxml"));

    Stage mainWindow;
    mainWindow = (Stage)  ((Node)event.getSource()).getScene().getWindow();

    mainWindow.getScene().setRoot(newScene);
}

主窗口似乎不想接受不同的布局。我该如何解决?

在一长串异常列表中,我找到了这一行: 原因:javafx.fxml.LoadException:未指定控制器。

所以我去了 SceneBuilder 并为 FXML 文件设置了合适的控制器 class。

而且它起作用了,所以这不是铸造问题。

我不确定为什么在程序的这个阶段需要它。可能是因为在 SceneBuilder 中(在 FXML 文件中也是如此)设置了事件的方法,并且没有控制器 class 具有要执行的方法。