我举一个不起作用的代码示例。在走得更远之前。我想要了解我班上的错误。
代码分为三部分:带有start方法的MainApp,带初始化方法的controleur,以及配置为由“controleur.java”控制的空白层fxml
这是我的例子,MainApp.java:
public MainApp MainApp;
public controleur mesDonnees;
private Stage primaryStage;
private AnchorPane rootLayout;
public boolean passepasse;
@Override
public void start(Stage primaryStage) throws IOException {
this.primaryStage = primaryStage;
rootLayout = new AnchorPane();
MainApp = new MainApp();
mesDonnees = new controleur();
mesDonnees.setMainApp(this);
this.passepasse =true;
System.out.println(passepasse);
CreationFichier();
}
public void CreationFichier() throws IOException{
// Load the fxml file and create a new stage for the popup dialog.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("FXML.fxml"));
AnchorPane page = (AnchorPane) loader.load();
// Create the dialog Stage.
Stage dialogStage = new Stage();
dialogStage.setTitle("Création d'un Cannevas");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(primaryStage);
Scene scene = new Scene(page);
dialogStage.setScene(scene);
controleur controller = loader.getController();
controller.setDialogStage(dialogStage);
controller.setMainApp(this);
dialogStage.showAndWait();
}
public boolean getPassePasse(){
return this.passepasse;
}
public static void main(String[] args) {
launch(args);
}
}
和控制器controleur.java
package MainApp;
import javafx.fxml.FXML;
import javafx.stage.Stage;
public class controleur {
private MainApp MainApp =new MainApp();
private Stage dialogStage;
@FXML
private void initialize() {
System.out.println(MainApp.getPassePasse());
if (false){
/* INSTRUCTIONS depend if passe passe is true or false;*/
}
}
public void setDialogStage(Stage dialogStage) {
this.dialogStage = dialogStage;
}
public void setMainApp(MainApp mainApp) {
this.MainApp = mainApp;
}
}
结果:
System.out.println(passepasse)给出了真实的
但
的System.out.println(MainApp.getPassePasse());假装。
我想这是一个强化问题,但避免这种情况的好方法是什么?