有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javafxjava。lang.NullPointerException在应用程序关闭时尝试获取mainApp中文本字段的文本时发生

我是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()总是返回一个空字符串。我希望它返回文本字段中的当前文本


共 (3) 个答案

  1. # 1 楼答案

    • 要删除NullPointerException,请在获取控制器之前首先运行load()
    • 为了在关闭应用程序时获取textfield的值,我使用了java中的Preferences类。util。prefs保存textfield的内容,然后我重写mainApp中的stop()方法,并返回其中保存的值

    我不确定这是最好的方法,但对我来说很有效,谢谢你的帮助

  2. # 2 楼答案

    在获取控制器之前,必须运行load()

    请尝试以下代码:

    FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
    loader.load();
    FXMLController controllerClass = loader.getController();
    controllerClass.getTextFieldValue();
    System.out.println("closing");
    
  3. # 3 楼答案

    您是否忘记在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();
    

    如果之前未将值设置为null,则该值始终为getTextFieldValue