java - 启动设置了默认值的 Popupwindow 时出现 NullPointerException,否则它可以工作
问题描述
当我通过主控制器的按钮事件打开弹出窗口时,弹出窗口出现并且一切看起来都很完美。但是当我尝试在组合框或文本字段中设置数据时
PopUpPersController:
public PopUpPersController() {
initialize();
}
private void initialize() {
txtMa_LohnGesKum.setText("1200.12");
}
并按下按钮打开弹出窗口,我得到一个空指针异常。
被maincontroller
称为Projektcontroller
,关联FXML-file
被称为Projekt.fxml
弹出窗口控制器被称为“PopUpPersController”,关联FXML-file
被称为PersCalc.fxml
。所有元素都有 fxId。我认为用 defaultdata 填充组合框或文本字段的方式与在 Maincontroller 中的工作方式相同......我没有找到涵盖这个问题的答案。
我对 Java 很陌生,非常感谢您的帮助和最诚挚的问候 Marcus
Main 或 ProjectController 中用于打开弹出窗口的 Button 的代码:
@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();
}
}
我试图找出主要错误:
- 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.数据分配textfield
引起:ui.controller.PopUpPersController.initialize(PopUpPersController.java:123) 处的 java.lang.NullPointerException
此行中的代码(见上文initialize()
):
txtMa_LohnGesKum.setText("1200.12");
解决方案
加载包含该fx:controller
属性的 fxml 会导致FXMLLoader
使用带有 0 个参数的构造函数来创建控制器类的实例。在注入任何字段之前调用构造函数导致 a NullPointerException
,即使这些字段可以访问FXMLLoader
并且 fxml 文件包含正确的fx:id
属性。
假设您确实正确设置了字段/ fx:id
,使该initialize
方法可见而不是从构造函数FXMLLoader
调用应该可以解决问题:initialize
public PopUpPersController() {
}
@FXML // you need this annotation for non-public members to be visible to FXMLLoader
private void initialize() {
txtMa_LohnGesKum.setText("1200.12");
}
确保FXMLLoader
应该注入的字段也用@FXML
(或public
)注释,并且fx:id
在 fxml 文件中设置了必需的属性。
推荐阅读
- javascript - 在 HTML 中测试麦克风
- c# - 文件上传后文件权限问题
- assembly - 在 8086 中打印多位偶数
- javascript - 如果 Angular 数据表中的数量 <1,如何选中复选框?我应该写一个函数吗?
- react-native - 反应原生嵌套堆栈导航返回
- eclipse - 如何在 Eclipse 比较视图中更改颜色
- powershell - 将文档写入 Domino 数据库的 Powershell 脚本
- python - Python - openpyxl wb.save() 抛出 TypeError
- arrays - 将字符串添加到空数组会给出“NAN”
- sql - 同一列的多个 LEFT JOINS