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

时间:2016-03-08 04:23:07

标签: java javafx javafx-8

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

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

已审核的问题:

2 个答案:

答案 0 :(得分:5)

我肯定会推荐一种干净的方法,如您所链接的问题所述。

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

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

关闭主舞台,创建一个新舞台并将其传递给App的新实例。我不能保证这个hack的内存行为。小心使用。

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

答案 1 :(得分:0)

对于重装应用程序,您必须创建主类的新实例并调用 它的启动方法有stage参数。例如

restartButton.setOnAction(e->{yourAPP app=new yourApp();
app.start(yourStage);});