小编典典

JavaFx-何时fxml注入对象字段?

java

我是javaFx的新手,我只在@fxml函数和initialize函数中发现@fxml字段不为null,否则@fxml字段将始终为null,是吗?如果是这样,我如何在加载fxml之后立即使用@fxml字段(不使用lookup),就像这样?(以下代码将引发null异常)

    @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


阅读 356

收藏
2020-11-30

共1个答案

小编典典

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

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

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

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

Parent pane = loader.load();
2020-11-30