javafx项目有一个fxml文档,不允许我在控制器中注入一个标签

时间:2018-03-24 04:07:13

标签: eclipse javafx-8 fxml scenebuilder injectable

我创建了一个JavaFX项目。这是它的样子:

JavaFX project 在SceneBuilder中,我使用一个标识为BorderPane的标签创建了label。 在我的SampleController我使用名为label的标签:

Label label;
public SampleController() {
    label.setText("hi");
}

如果我删除label.setText("hi");代码工作正常,但代码在那里我得到以下错误。 它很长,这是它的一部分。

  

javafx.fxml.LoadException:

我认为这是最重要的部分。 然而,我可以添加按钮和他们的行动,它仍然可以正常工作。 现在我补充道。

@FXML
private Pane taskPane;
private void initialize() {
        System.out.println(taskPane.getWidth());
    }

我做了与带有窗格的标签相同的东西,我得到了一个 空指针异常。

1 个答案:

答案 0 :(得分:0)

当加载fxml时,在FXMLLoader将对象注入控制器的字段之前创建控制器实例。由于您尝试访问创建控制器期间调用的构造函数中的Label,因此会生成NullPointerException

Label的初始化移至initialize方法。在从FXMLLoader方法返回之前,即在注入字段之后,load调用此方法:

@FXML
Label label;
public SampleController() {}

@FXML
private void initialize() {
    label.setText("hi");
}

简单地设置标签的text属性当然也可以从fxml中完成......