JavaFx-当fxml注入对象字段?

我是javaFx的新手,我只在@fxml函数和初始化函数中找到@fxml字段不为null,否则@fxml字段将始终为null,是真的吗? 如果是这样,我如何在加载fxml(不使用查找)后立即使用@fxml字段,就像这样?(以下代码将抛出nullexception)

@FXML Label resultTF; .... FXMLLoader loader=new FXMLLoader(); loader.setController(this); Parent pane = loader.load(getClass().getResource("/fxml/Main.fxml")); this.resultTF.setText(""); 

我想做的就是在fxml中声明一个id为id的字段,并在加载fxml之后立即使用它,比如wpf,flex

您正在调用静态FXMLLoader.load(URL)方法。

因为它是一个静态方法,所以它对你用来调用它的实例一无所知(无论如何这都是不好的做法;你的IDE应该发出警告)。 具体来说,它没有控制器设置。

您需要调用实例load()方法 ,例如

 FXMLLoader loader=new FXMLLoader(); loader.setController(this); loader.setLocation(getClass().getResource("/fxml/Main.fxml")); Parent pane = loader.load(); 

您可以在FXML文件中指定控制器。 FXMLLoader将初始化控制器中的变量。 在这种情况下,您的代码没有问题。 将控制器与主类分开是一种好习惯。