尝试将数据传递到弹出窗口时出现Nullpointerexception

时间:2019-05-19 09:11:22

标签: javafx nullpointerexception popupwindow

当我尝试将数据传递给Poupwindow时,我得到了一个nullpointer异常。 在主控制器中,我启动出现的poupupwindow。 当我在主控制器中添加一行代码,该代码在poupwindow中调用一个方法并传递一个参数时,我得到了异常。 在使用poupwindows之前,我遇到了一个稍有不同的问题,这里已经解决了这个问题(我无法在popupwindow的构造函数中调用方法)。对我来说,我的代码看起来像在网上找到的示例。 我显然不清楚Windows如何进行通讯。我认为安装过程如下:

主控制器:

  • popupwindowcontroller的成员变量(已初始化)
  • 调用popupwindow的方法包含:
    • FXMLLoader,
    • popupcontroller的定义,
    • 将调用控制器(由此成为主控制器)传递给
    • 弹出窗口的调用

Popupcontroller:

  • 调用控制器的成员变量,以在必要时返回数据
  • 空的构造函数
  • 一种用于接收数据以进行初始化的方法

在两个fxml文件中:(这是popupfxml)

  • 每个窗口的控制器必须添加fx:controller="ui.controller.PopUpNewKatController 例如:

    <AnchorPane prefHeight="163.0" prefWidth="559.0" style="-fx-background-color: #071129;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ui.controller.PopUpNewKatController">
    

如果使用私有方法,则必须添加@FXML使其可见和可调用,如果使用带有参数的方法,则必须为public
我希望有人能告诉我哪里错了。
非常感谢你。马库斯

主控制器:

public class ProjektController{
    @FXML
    private PopUpNewKatController newKatControl;
    private void  showNewKatPopUp() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/ui/fxml/PopUpNewKat.fxml"));
            newKatControl = loader.getController();
            newKatControl.init(this);
            newKatControl.setText("Test");
            Parent root=(Parent)loader.load();
            Scene newScene = new Scene(root);
            Stage newStage=new Stage();
            newStage.setScene(newScene);
            newStage.show();
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Poupwindowcontroller:

public class PopUpNewKatController {

    @FXML
    private Label lblAbt;

    private ProjektController projControl;

    public PopUpNewKatController() {
    }

    public void init(ProjektController pControl ){
        projControl=pControl;
    }

    public void setText(String str) {
        System.out.println("PU str "+str);
        lblAbt.setText(str);
    }
}
Caused by: java.lang.NullPointerException
at ui.controller.ProjektController.showNewKatPopUp(ProjektController.java:4337)

这是该行中的代码:

newKatControl.init(this);

0 个答案:

没有答案