Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx如何正确切换场景?_Javafx_Fxml_Scene - Fatal编程技术网

Javafx如何正确切换场景?

Javafx如何正确切换场景?,javafx,fxml,scene,Javafx,Fxml,Scene,我在互联网上到处寻找,但我找不到一个简单问题的直接答案:在JavaFX应用程序中切换场景的最佳方式是什么? 我有几个FXML文件和每个控制器,我希望能够尽快在它们之间切换(屏幕大小应该保持不变,关于窗口的所有内容都应该保持不变,除了内容) 我可以考虑很多方法,最常见的方法是使用FXMLLoader加载FXML文件,然后创建一个新场景,然后将此场景设置为舞台,最后显示舞台。这是可行的,但对我来说似乎效率不高,因为每次我切换页面时,程序都必须创建一个全新的场景,然后将其分配给舞台。为什么这种方法最常

我在互联网上到处寻找,但我找不到一个简单问题的直接答案:在JavaFX应用程序中切换场景的最佳方式是什么? 我有几个FXML文件和每个控制器,我希望能够尽快在它们之间切换(屏幕大小应该保持不变,关于窗口的所有内容都应该保持不变,除了内容)

我可以考虑很多方法,最常见的方法是使用FXMLLoader加载FXML文件,然后创建一个新场景,然后将此场景设置为舞台,最后显示舞台。这是可行的,但对我来说似乎效率不高,因为每次我切换页面时,程序都必须创建一个全新的场景,然后将其分配给舞台。为什么这种方法最常用

Parent root = FXMLLoader.load(getClass().getResource("newPage.fxml"));
Stage.setScene(new Scene(root));
Stage.show();
我发现了另一种方法,就是简单地更改当前场景的根(因此基本上用新的替换场景的FXML文件)。这似乎有点快,也不太滞后,但这是一种好的做事方式吗

Parent root = FXMLLoader.load(getClass().getResource("newPage.fxml"));
Stage.getScene().setRoot(root);
Stage.show();

在页面(场景)之间切换的最佳方式是什么

考虑到您自己的要求“屏幕大小应该保持不变,除了内容之外,窗口的所有内容都应该保持不变”,那么方法二似乎是最合适的,不是吗?因为它也稍微快一点,并且根据您自己的发现工作,所以我不会再三考虑做出选择。

如果没有错误,两者都可以。没有最好的。使用最适合你情况的方法。好的。谢谢