在FXML带注释的按钮操作方法中,类中的对象值变为零。
我在课堂上声明了一个对象,如下所示,
private LoginData loginData;
在另一个舞台上,我调用方法switchStage(Stage, LoginData)
来启动此阶段。方法是,
public void switchStage(Stage primaryStage, LoginData lDat) throws Exception{
if(lDat!= null) {
loginData = lDat;
System.out.println("SwitchStage : " + lDat.getUserAccessType());
} else {
loginData = new LoginData();
}
start(primaryStage);
}
在start(Stage)方法中,我从FXML文件加载舞台。方法定义如下,
public void start(Stage primaryStage) throws Exception {
System.out.println("Before FXML load : " + loginData.getUserAccessType());
Parent root = FXMLLoader.load(getClass().getResource("/com/<package>/view/LoadFiles.fxml"));
System.out.println("After FXML Load : " + loginData.getUserAccessType());
Scene scene = new Scene(root);
root.setStyle("-fx-border-color: black; -fx-border-width: 1px; ");
if (!primaryStage.isShowing())
primaryStage.initStyle(StageStyle.UNDECORATED);
scene.getStylesheets().add(ReconcileinaLoadFilesController.class.getResource("/com/<package>/view/LoadFiles.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.centerOnScreen();
System.out.println("Before Stage show : " + loginData.getUserAccessType());
primaryStage.show();
System.out.println("After Stage show : " + loginData.getUserAccessType());
}
我可以看到上述每个println
语句中保留的值。
我的FXML文件中有一个ToggleButton,动作方法定义(与上述方法在同一个类中)如下,
@FXML
public void settingsBtnAction() throws IOException{
if(loginData != null) {
System.out.println("Settings: " + loginData.getUserAccessType());
} else {
System.out.println("loginData is null"); // <--- code returns this everytime.
}
}
这里发生了什么以及如何在ToggleButton的动作方法中保留对象loginData
的值?我完全迷失了。
修改
我尝试在声明行中初始化对象,看起来它保留了此处的值,但它无法获得我手动设置的值。
private LoginData loginData = new LoginData(); //Gets me the value set in the constructor of the LoginData class.