【发布时间】:2016-10-12 21:27:57
【问题描述】:
如何从“start”方法之外打开辅助 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 说有一种方法可以从外部开始打开第二个窗口。如何做到这一点?
【问题讨论】:
-
这与其他问题不同,因为我不想使用按钮或 start() 方法中的任何其他方法打开第二个窗口,正如我在对 sillyfly 的评论中所解释的那样。
-
您应该将 JavaFX 应用程序中的
start()方法视为“传统”(即非 JavaFX)应用程序中main()方法的替代品。 (在JavaFX 中,您甚至不需要main()方法!)所以start()是应用程序的入口点:一切都从该点开始。要求做一些最终不是由start()方法触发的事情是没有意义的。也许this question 会有所帮助。 -
@James_D 我想从应用程序类中的方法(不是启动)创建第二个窗口。 SecondWin 方法被另一个类调用。
-
@James_D 我正在创建一个策略游戏,一个非常基本的文明游戏(一个视频游戏系列,你可能知道)。我希望当一个玩家在轮到他的时候点击一个动作按钮时,会出现一个带有消息的新窗口(“轮到你了”或类似的东西)。我无法通过 start() 方法显示该窗口。
-
@James_D 我试图避免将逻辑放在 start 方法中。在其他一些情况下,我需要打开第二个窗口,在这种情况下,将整个逻辑放在 start 方法中会非常笨拙。您确定没有办法避免将逻辑置于 start 中吗?
标签: java user-interface javafx javafx-8 stage