2017-06-20 2 views
-1

nicht öffnen, wenn ich die Methode "openPlanes" im Knopf die Option "onAction" setze. Dies zeigt viele Fehler. Aber wenn ich die "openPlanes" öffne, normal normal.Konnte ein neues Fenster in 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

Verursacht durch: javafx.fxml.LoadException: Keine Controller angegeben. file:/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 

Exception laufende Anwendung dgdsoft .DGDSoft Java Ergebnis: 1

+0

Was sind die Fehler? Was ist 'openStage (...)'? –

+0

Ich war dieser Kerl Anwendung GitHub Analyse - https://github.com/mlayah/bookingFX/tree/master/src/bookingfx YouTube - https://www.youtube.com/watch?v=ooT0Ueyngeo I machte einige gleiche Teile, um mehr zu lernen, ich habe versucht, einige zu ändern. Jetzt habe ich versucht, ein zweites Fenster aufzurufen, aber ich habe diesen Fehler nicht verstanden und weder dieser Code –

+0

"Kein Controller angegeben" bedeutet, dass Sie die Controller-Klasse in Ihrer FXML-Datei nicht angegeben haben. –

Antwort

0

Zuerst stellen Sie sicher, dass die fxml-Ressource, die Sie laden möchten, in dem Verzeichnis ist, das Sie erwarten. Wenn es in dem entsprechenden Verzeichnis ist, dann öffne die fxml-Datei und suche nach der Zeichenkette fx: controller. Stellen Sie sicher, dass sich der Controller in der angegebenen Verpackung befindet.

Wenn Sie die Zeichenfolge fx nicht gefunden haben: Controller in der fxml Datei dann müssen Sie es programmatisch tun:

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; 

    } 

Schließlich legen sie die fxml Datei und Code.

Verwandte Themen