2017-06-20 3 views
-1

lorsque je mets la méthode "openPlanes" dans le bouton l'option "onAction". Cela montre beaucoup d'erreurs. Mais si je supprime les "openPlanes" son ouverture normale.Impossible d'ouvrir une nouvelle fenêtre dans JavaFX

@FXML 
    private void openPlanes() { 
     openStage("view/Cadastro.fxml"); 
    } 

private void openStage(String fxml) { 
     try { 
      Stage currentStage = (Stage) PLANE.getScene().getWindow(); 
      Parent root = FXMLLoader.load(getClass().getResource(fxml)); 
      Scene scene = new Scene(root); 
      Stage stage = new Stage(StageStyle.TRANSPARENT); 
      stage.setScene(scene); 
      stage.show(); 
      currentStage.hide(); 

     } catch (IOException ex) { 
      Logger.getLogger(mainController.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

enter image description here

causés par: javafx.fxml.LoadException: Non spécifié contrôleur. fichier :/C: /Users/diego/Documents/NetBeansProjects/Automekanik/DGDSoft/dist/run708547813/DGD%20Soft.jar /dgdsoft/view/MainDGD.fxml: 23

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2597) 
at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:103) 
at javafx.fxml.FXMLLoader$Element.getControllerMethodHandle(FXMLLoader.java:557) 
at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:599) 
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:770) 
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) 
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) 
at dgdsoft.DGDSoft.start(DGDSoft.java:19) 
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
... 1 more 

application en cours Exception dgdsoft .DGDSoft Java Résultat: 1

+0

Quelles sont les erreurs? Qu'est-ce que 'openStage (...)'? –

+0

J'analysait la demande de ce type GitHub - https://github.com/mlayah/bookingFX/tree/master/src/bookingfx YouTube - https://www.youtube.com/watch?v=ooT0Ueyngeo I fait quelques parties égales pour en savoir plus, j'ai essayé de modifier certains. Maintenant j'essayais d'appeler une deuxième fenêtre mais je n'ai pas compris cette erreur et ni ce code –

+0

"Aucun contrôleur spécifié" signifie que vous n'avez pas spécifié la classe de contrôleur dans votre fichier FXML. –

Répondre

0

Assurez-vous d'abord que la ressource fxml que vous essayez de charger se trouve dans le répertoire prévu. S'il se trouve dans le répertoire approprié, ouvrez le fichier fxml et recherchez la chaîne fx: controller. Assurez-vous que le contrôleur se trouve dans l'emballage indiqué.

Si vous ne trouvez pas la fx chaîne: contrôleur dans le fichier FXML alors vous devez le faire comme programatically:

private Scene getScene(String fxmlPath, ControllerClass controller) { 
     FXMLLoader loader; 
     Parent parent; 
     Scene scene; 
     try { 
      //not FXMLLoader.load(getClass().getResource(fxmlPath) 
      loader = new FXMLLoader(getClass().getResource(fxmlPath)); 
      loader.setController(controller); 
      parent = loader.load(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return null; 
     } 
     scene = new Scene(parent); 

     return scene; 

    } 

Enfin, envoyez le fichier FXML et le code.