gpt4 book ai didi

java - 当使用设置的默认值启动 Popupwindow 时出现 NullPointerException,否则它可以工作

转载 作者:行者123 更新时间:2023-12-02 01:31:06 25 4
gpt4 key购买 nike

当我通过主 Controller 的按钮事件打开弹出窗口时弹出窗口出现,一切看起来都很完美。但是当我尝试在组合框或文本字段中设置数据时

PopUpPersController:

public PopUpPersController() {
initialize();
}
private void initialize() {
txtMa_LohnGesKum.setText("1200.12");
}

然后按下按钮打开弹出窗口,我得到一个空指针异常。

主 Controller 称为Projektcontroller,关联的 FXML 文件 称为 Projekt.fxml弹出窗口 Controller 称为“PopUpPersController”,名为 PersCalc.fxml 的关联 FXML 文件。所有元素都有 fxId。我认为用默认数据填充组合框或文本字段的工作方式与主 Controller 中的工作方式相同......我没有找到涵盖这个问题的答案。

我对 Java 很陌生,非常感谢您的帮助和最诚挚的问候马库斯

来自 Main 或 ProjectController 的用于打开弹出窗口的按钮的代码:

@FXML
void onAction_Test(ActionEvent event) {
try {
Parent root1 = FXMLLoader.load(getClass().getResource("/ui/fxml/PersCalc.fxml"));
Stage persStage = new Stage();
persStage.setTitle("Personalkosten-Rechner");
persStage.setScene(new Scene(root1));
persStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}

我尝试找出主要错误:

  1. PersCalc.fxml 中的 javafx.fxml.LoadException

这行代码:

<BorderPane xmlns="http://javafx.com/javafx/10.0.1"xmlns:fx="http://javafx.com/fxml/1" fx:controller="ui.controller.PopUpPersController">

2.来自ProjectController中的按钮事件(见上文)这行代码:

Parent root1=FXMLLoader.load(getClass().getResource("/ui/fxml/PersCalc.fxml"));

3.将数据分配给文本字段

Caused by: java.lang.NullPointerException at ui.controller.PopUpPersController.initialize(PopUpPersController.java:123)

这一行的代码(参见上面的initialize()):

 txtMa_LohnGesKum.setText("1200.12");

最佳答案

加载包含 fx:controller 属性的 fxml 会导致 FXMLLoader 使用采用 0 个参数的构造函数来创建 Controller 类的实例。即使 FXMLLoader 可以访问这些字段并且 fxml 文件包含正确的 fx,在注入(inject)任何字段之前都会调用构造函数,从而导致 NullPointerException: id 属性。

假设您正确设置了 field/fx:id,使 initialize 方法对 FXMLLoader 可见,而不是调用 从构造函数初始化应该可以解决问题:

public PopUpPersController() {
}

@FXML // you need this annotation for non-public members to be visible to FXMLLoader
private void initialize() {
txtMa_LohnGesKum.setText("1200.12");
}

确保应注入(inject)的字段 FXMLLoader 也使用 @FXML(或 public)和必需的 fx:id 进行注释 属性在 fxml 文件中设置。

关于java - 当使用设置的默认值启动 Popupwindow 时出现 NullPointerException,否则它可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com