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