初始化期间javafx空指针异常

时间:2016-10-05 08:08:07

标签: javafx nullpointerexception controller initialization

我举一个不起作用的代码示例。在走得更远之前。我想要了解我班上的错误。

代码分为三部分:带有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());假装。

我想这是一个强化问题,但避免这种情况的好方法是什么?

0 个答案:

没有答案