java - JavaFX Application returning NullPointerException when other Scene is called (just sometimes) -


my application has login scene , main view scene, happening when login , mainview called exception:

java.lang.nullpointerexception     @ javafx.scene.scene.focusinitial(scene.java:1879)     @ javafx.scene.scene.access$3600(scene.java:170)     @ javafx.scene.scene$scenepulselistener.focuscleanup(scene.java:2181)     @ javafx.scene.scene$scenepulselistener.pulse(scene.java:2221)     @ com.sun.javafx.tk.toolkit.firepulse(toolkit.java:363)     @ com.sun.javafx.tk.quantum.quantumtoolkit.pulse(quantumtoolkit.java:460)     @ com.sun.javafx.tk.quantum.quantumtoolkit$9.run(quantumtoolkit.java:329)     @ com.sun.glass.ui.win.winapplication._runloop(native method)     @ com.sun.glass.ui.win.winapplication.access$100(winapplication.java:29)     @ com.sun.glass.ui.win.winapplication$3$1.run(winapplication.java:73)     @ java.lang.thread.run(thread.java:722) 

the curious doesn't happening always, just sometimes.

my class:

public class targetappdesktop extends application {      @override     public void start(stage primarystage) throws ioexception {          scene scene = new scene(new anchorpane());          loginmanager loginmanager = new loginmanager(scene);         loginmanager.showloginscreen();         primarystage.setresizable(false);         primarystage.setscene(scene);         primarystage.show();          primarystage.setoncloserequest(new eventhandler<windowevent>() {             @override             public void handle(windowevent t) {                 mainviewcontroller.deletetempfiles();                 platform.exit();                 system.exit(0);             }         });      }      public static void main(string[] args) {         launch(args);     } } 

my login manager class

public class loginmanager {      private scene scene;      loginmanager(scene scene) {         this.scene = scene;     }      public void logout() {         showloginscreen();     }      void showloginscreen() {         try {             fxmlloader loader = new fxmlloader(                     getclass().getresource("login.fxml"));             //         scene.getstylesheets().add(this.getclass().getresource("login.css").toexternalform());              scene.setroot((parent) loader.load());             logincontroller controller =                     loader.<logincontroller>getcontroller();             controller.initmanager(this);         } catch (ioexception ex) {             logger.getlogger(loginmanager.class.getname()).log(level.severe, null, ex);         }     }      void showmainviewscreen(login logintargetapp, login logingateway, gateway gateway, file file, arraylist<integer> anolist) {              try {                  fxmlloader loader = new fxmlloader(getclass().getresource("mainview.fxml"));                  scene.setroot((parent) loader.load());                  mainviewcontroller controller = loader.<mainviewcontroller>getcontroller();                  controller.initsessionid(this, scene, logintargetapp, logingateway, gateway, file, anolist);              } catch (exception ex) {                 logger.getlogger(loginmanager.class.getname()).log(level.severe, null, ex);             }      }      void autheticated(login logintargetapp, login logingateway, gateway gateway, file file, arraylist<integer> anolist) {         showmainviewscreen(logintargetapp, logingateway, gateway, file, anolist);     } } 

this problem ocurring because trying change scene in thread, must changed in javafx main thread, simple platform.runlater solved problem.

more detail can find here. (jira link)


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -