我目前的情况如下:
我创建了一个由FXML控制器支持的FXML文件。屏幕由侧边栏和子容器组成。当我单击侧边栏中的元素时,我会在子容器中加载另一个FXML文件,如下所示:
childHolder.getChildren().addAll(FXMLLoader.load(getClass().getResource("SidebarItem1.fxml")));
这很好用。但是我想在父控制器的控制器中访问加载的FXML的一些元素。我只是在加载后初始化了子FXML的元素。
我已经看过这个问题:JAVAFX - FXML - Access Loaded FXML Controls from Parent Controller,但是当我像那样做时,仍然会出现错误:
FXMLLoader loader = new FXMLLoader(getClass().getResource("SidebarItem1.fxml"));
loader.setController(this);
childHolder.getChildren().addAll(loader.load());
someChildTextField.setText("Some text");
我已经给someChildTextField
添加了一个fx:id
属性,并将它放置在初始化的顶部,代码如下:
@FXML public TextField someChildTextField;
仍然会出现NullpointerException的情况,因此我认为它仍然无法找到控件。
有人知道如何在父Controller中访问加载的FXML元素吗?
fx:id
(如果需要,请发布FXML的部分内容)。还要检查确实是someChildTextField
为空。 - James_Dfx:id
,但实际上是someChildTextField
为空。 - bashoogzaad