2016-06-12 75 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方法由另一个类调用。 –