我是javaFx的新手,我只在@fxml函数和初始化函数中找到@fxml字段不为null,否则@fxml字段将始终为null,是真的吗? 如果是这样,我如何在加载fxml(不使用查找)之后立即使用@fxml字段,就像这样?(以下代码将抛出空异常)
@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
答案 0 :(得分:3)
您正在调用静态FXMLLoader.load(URL)
方法。
因为它是一个静态方法,所以它对你用来调用它的实例一无所知(无论如何这都是不好的做法;你的IDE应该发出警告)。具体来说,它没有控制器设置。
您需要调用instance load()
method,例如
FXMLLoader loader=new FXMLLoader();
loader.setController(this);
loader.setLocation(getClass().getResource("/fxml/Main.fxml"));
Parent pane = loader.load();
答案 1 :(得分:-1)
您可以在FXML文件中指定控制器。 FXMLLoader将初始化控制器中的变量。在这种情况下,您的代码没有问题。将控制器与主类分开是一种好习惯。