当我想为我的textField设置setText时,它会抛出空指针异常[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

当我想为TextField(miniFilePath)设置文本时,它会抛出null异常我不知道我的代码有什么问题?

public class SettingsController {

@FXML
private TextField miniFilePath;

@FXML
private Button settingExitBtn;

public static String miniFilterPath = new String() ;
public static String reportDirectoryPath = new String();
Stage settings = new Stage();



public void display( ){

    try {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Settings.fxml"));

        Parent root = (Parent) fxmlLoader.load();
        //settings = new Stage();
        Stage settings = new Stage();
        settings.setScene(new Scene(root));
        settings.initModality(Modality.APPLICATION_MODAL);
        settings.setResizable(false);
        settings.setTitle("settings");

        if (!miniFilterPath.isEmpty())
            miniFilePath.setText(miniFilterPath);

        settings.show();

    } catch(Exception e) {
        e.printStackTrace();
    }

}

这个类作为我的第二个窗口,当我点击另一个窗口中的一个按钮时,会调用该类的一个实例并生成窗口。我希望在用户为文本字段设置文本后,每次用户尝试打开此窗口时,文本字段将设置为之前设置的字符串。

java javafx
1个回答
1
投票

在display()方法之前重写initialize()方法

@FXML
public void initialize() {
    refresh();
}

public void refresh() {
   if (!(miniFilterPath == null | miniFilterPath.trim().equals("")))
       miniFilePath.setText(miniFilterPath);
}

此外,我假设您的fxml文件中有一个文本字段,其中包含以下内容:

 fx:id="miniFilePath"

如果没有,请使用以下命令在display()方法中初始化文本字段:

miniFilePath = new TextField();
© www.soinside.com 2019 - 2024. All rights reserved.