我创建了一个JavaFX项目。这是它的样子:
在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());
}
我做了与带有窗格的标签相同的东西,我得到了一个 空指针异常。
答案 0 :(得分:0)
当加载fxml时,在FXMLLoader
将对象注入控制器的字段之前创建控制器实例。由于您尝试访问创建控制器期间调用的构造函数中的Label
,因此会生成NullPointerException
。
将Label
的初始化移至initialize
方法。在从FXMLLoader
方法返回之前,即在注入字段之后,load
调用此方法:
@FXML
Label label;
public SampleController() {}
@FXML
private void initialize() {
label.setText("hi");
}
简单地设置标签的text
属性当然也可以从fxml中完成......