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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaFX中重新加载应用程序?相关的知识,希望对你有一定的参考价值。

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

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

问题回顾:

答案

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

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

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

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

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

另一答案

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

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

以上是关于如何在JavaFX中重新加载应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在JavaFX中保存/加载TableView中的数据

当活动中的异步任务完成时如何在片段中重新加载ui?

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

如何以毫秒为单位获取javaFX音频片段的长度[关闭]

OnDetach/onAttach 片段重新创建片段活动

重新加载片段