![](/img/trans.png)
[英]java.lang.NullPointerException bug when trying to run an app on netbeans
[英]java.lang.NullPointerException when trying to get the text of a textfield in mainApp when app is closing
我是 javaFX 的新手,我试图在我的应用程序关闭时获取文本字段的值,所以我使用了
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
FXMLController controllerClass = loader.getController();
loader.load();
controllerClass.getTextFieldValue();
System.out.println("closing");
里面
stage.setOnCloseRequest()
但我总是得到一个 java.lang.NullPointerException。
这是 getTextfieldValue()
System.out.println(textField.getText());
所以基本上这就是我想要实现的,我想在我的应用程序关闭时获取文本字段中的值。 所以我的 mainApp 类中有我的stage.onCloseRequest()
方法,但 textField.getText() 总是返回一个空字符串。 我希望它返回 textField 中的当前文本。
您必须在获得控制器之前运行load()
。
试试这个代码:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
loader.load();
FXMLController controllerClass = loader.getController();
controllerClass.getTextFieldValue();
System.out.println("closing");
您是否忘记在Scene.fxml
添加fx:id
? 请提供更多代码示例。 我不知道您的FXML
文件中发生了什么。 我认为可能缺少某种 xml 代码。
虽然我不知道你想要实现什么,但我认为有更简单和正确的方法来做到这一点。
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml")));
loader.setController(new FXMLController()); // you can not get controller, unless you set it first
FXMLController controllerClass = loader.getController();
controllerClass.getTextFieldValue();
如果您之前未将值设置为getTextFieldValue
,则这始终为null
load()
然后再获取控制器。stop()
方法并取回了其中保存的值.不确定这是最好的方法,但它对我有用,谢谢大家的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.