0

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

JavaFX 项目 在 SceneBuilder 中,我创建了BorderPane一个带有 id 的标签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());
    }

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

4

1 回答 1

0

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

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

@FXML
Label label;
public SampleController() {}

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

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

于 2018-03-24T10:15:10.483 回答