如何在JavaFX中重新加载应用程序?

问题描述 投票:2回答:2

我有一个小游戏,有新游戏按钮。按下“新游戏”按钮时,有许多变量需要重置。是否有任何方法可以轻松地重新加载整个应用程序或任何替代刷新场景,阶段或变量?我只想将应用程序带到它首次加载时的初始阶段。

我在互联网上浏览了不同的主题,并在这里阅读了很多问题和答案,但我没有简单的方法来实现它。大多数答案建议重用整个代码或将整个代码放在类中并重新加载它。

问题回顾:

java javafx javafx-8
2个回答
5
投票

我肯定会推荐一种干净的方法,正如你所链接的问题所讨论的那样。

然而,快速而肮脏的方式可能如下:

restartButton.setOnAction( __ ->
{
  System.out.println( "Restarting app!" );
  primaryStage.close();
  Platform.runLater( () -> new ReloadApp().start( new Stage() ) );
} );

关闭主舞台,创建一个新舞台并将其传递给应用程序的新实例。我不能保证这个hack的内存行为。仔细使用它。

完整的例子:https://gist.github.com/bugabinga/ce9e0ae2328ba34133bd


0
投票

对于重新加载应用程序,您必须创建主类的新实例,并使用stage参数调用它的start方法。例如

restartButton.setOnAction(e->{yourAPP app=new yourApp();
app.start(yourStage);});
© www.soinside.com 2019 - 2024. All rights reserved.