2017-03-16 28 views
0

我的項目已完成,因此我在IntelliJ中創建了一個JAR。第一階段(javaFX)正在顯示,但是當我點擊按鈕創建一個新階段時,沒有任何反應(期望舊階段關閉,這是預期的)。爲什麼運行時沒有創建一個新的階段?JAR在創建新場景之前關閉

view.getStartButton().setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      view.getScene().getWindow().hide(); 
      GameView view = new GameView(); 
      TetrisSpelEigenschappen model = new TetrisSpelEigenschappen(); 
      TetrisSpel spel = new TetrisSpel(model); 
      TetrisBlokken blokmodel = new TetrisBlokken(spel,model); 
      GamePresenter gamePresenter = new GamePresenter(view, model, spel, blokmodel); 
      Stage gameStage = new Stage(); 
      Scene gameScene = new Scene(view); 
      gameStage.setScene(gameScene); 
      gameStage.setTitle("Game"); 
      gameStage.centerOnScreen(); 
      gamePresenter.addWindowEventHandlers(); 
      gameStage.showAndWait(); 
     } 
+0

要查看是否有任何未檢查的異常正在被代碼拋出,請嘗試從命令行('java -jar myJarFile.jar')運行jar文件。 –

回答

1

默認情況下,應用程序將在最後一個窗口關閉時退出。由於在您的代碼中,您在打開新窗口之前關閉了現有窗口,因此我懷疑發生的事情是該平臺正在退出。 (注意:這種行爲是有點脆弱...)

Platform.setImplicitExit(false); 

添加到您的Application類的init()start(...)方法。

+0

似乎沒有改變任何東西。按下按鈕後它仍然關閉。我也嘗試了getWindow.hide()的註釋。 JAR不再關閉,但點擊按鈕不起作用,沒有新的階段。 – m4t5k4

+0

@ m4t5k4所以你可能會在調用hide()和調用showAndWait()之間拋出一個異常。如果這發生在jar文件中,但不是從文件系統運行時,最可能的(但不是唯一可能的)原因是您正在使用無效的資源名稱加載資源。從命令行運行jar文件,以便可以看到任何未處理的異常。 –

+0

小小的更新:由於絕對路徑,JAR文件找不到資源。 – m4t5k4