当我想为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();
}
}
此类作为我的第二个窗口,当我在另一个窗口中单击一个按钮时,将调用此类的一个实例并生成窗口。 我希望在用户为文本字段设置文本后,每次用户尝试打开此窗口时,文本字段都将设置为之前设置的字符串。
答案 0 :(得分: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();