JavaFx-当fxml注入对象字段?

时间:2017-10-09 15:53:10

标签: java javafx

我是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

2 个答案:

答案 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将初始化控制器中的变量。在这种情况下,您的代码没有问题。将控制器与主类分开是一种好习惯。