Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
如何为JavaFXStage loader创建一个函数_Java_Javafx_Fxml_Scenebuilder - Fatal编程技术网

如何为JavaFXStage loader创建一个函数

如何为JavaFXStage loader创建一个函数,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我正在开发一个登录系统,有两个用于登录和注册菜单的窗口。主装入器类如下所示 Parent root = FXMLLoader.load(getClass().getResource("../views/Login.fxml")); Scene scene = new Scene(root,1049, 594); SignUpstage.setScene(scene); SignUpstage.setTit

我正在开发一个登录系统,有两个用于登录和注册菜单的窗口。主装入器类如下所示

Parent root = FXMLLoader.load(getClass().getResource("../views/Login.fxml"));
            Scene scene = new Scene(root,1049, 594);
            SignUpstage.setScene(scene);
            SignUpstage.setTitle("Login");
            SignUpstage.initStyle(StageStyle.TRANSPARENT);


我想使用按钮或超链接从注册页面返回登录页面。如何编写一个函数来加载登录阶段而不在注册控制器中重写上述代码?

您可以在应用程序启动时创建所有场景并存储它们。然后使用名为
switchScene()
的方法交换舞台上的当前场景

这样做的好处是,由于每次都不重新创建场景,因此在返回到场景时也会保存场景的“状态”

这里有一种方法(可能不是在Main中执行此操作的最佳方法,但这只是一个示例-您可以将其移动到另一个类,只要该类可以访问
primaryStage
scenes
):

class Main扩展了应用程序{
静态HashMap场景;
初级阶段;
//将其称为内部开始()
void initAllScenes(){
//添加到场景中
//添加到场景中
//添加任何其他场景
}
void setScene(字符串名称){
primaryStage.setScene(scenes.get(name));
primaryStage.show();
}
然后在注册控制器中:


类注册控制器{
Application app;//如果要从主应用程序切换场景,则需要将其传递给控制器
void goBack(){
app.setScene(“登录”);
}
}

如果您不希望返回时场景的状态与离开时的状态相同,请在控制器中为每次切换到场景时调用的每个场景创建一个
reset()
方法。在SignUpController中,app object无法访问setScene方法,对吗方法位于应用程序对象(即
Main
类)内。因此,它可以。