2016-06-12 76 views
-1

如何從「開始」方法之外打開輔助JavaFX窗口(階段)? (僅)當我關閉它出現例如,從外部開始打開第二個JavaFX窗口

public class GUI_Test extends Application { 
static Stage secondStage; 

public static void main(String[] args) { 
    launch(args); 
    showSecondWin(); 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    primaryStage.setScene(new Scene(
      new VBox(
        new Label("window 1")))); 
    primaryStage.show(); 

    secondStage = new Stage(); 
} 

public static void showSecondWin() { 
    secondStage.setScene(new Scene(
      new VBox(
        new Label("window 2")))); 
    secondStage.show(); 
} 
} 

上面的代碼僅示出了第一個窗口(「primaryStage」),以及java.lang.reflect.InvocationTargetException錯誤消息。

James_D表示有一種方法可以從外部開始打開第二個窗口。這怎麼能實現?

+0

這與其他問題不同,因爲我不想用button或start()方法打開第二個窗口,正如我在傻傻的評論中所解釋的那樣。 –

+1

您應該將JavaFX應用程序中的'start()'方法視爲「傳統」(即非JavaFX)應用程序中'main()'方法的替代方法。 (在JavaFX中,你甚至不需要'main()'方法!)所以'start()'是應用程序的入口點:所有東西都是從這個點開始的。要求做一些最終不會被'start()'方法觸發的東西並沒有什麼意義。也許[這個問題](http://stackoverflow.com/questions/37579645)將有所幫助。 –

+0

@James_D我想從應用程序類中的方法(不是開始)創建第二個窗口。 SecondWin方法由另一個類調用。 –

回答

3

從文檔Application

推出方法不返回,直到退出應用程序,無論是通過調用Platform.exit或所有應用程序的窗口已經關閉。

這意味着main方法中的第二行僅在JavaFX線程退出後纔會調用,因此您無法再創建更多階段。

您可以在start方法中創建並顯示第二階段。如果這不是一個有效的選擇,請嘗試解釋你想要達到的目標。

+0

我想打開一個從啓動方法外部觸發的對話窗口。也許我可以用stage.hide()方法做些什麼?我試着玩了一下,但沒有奏效...... –

+0

開啓另一個舞臺的觸發器是什麼?爲什麼在應用程序退出之前無法表達? – Itai

+0

我想從應用程序類中的方法(不是開始)創建第二個窗口。 SecondWin方法由另一個類調用。 –