我设计了两种MVC结构(不确定这个术语是否正确)
对于 home.fxml 和 login.fxml。
如何在成功登录后更改为 home.fxml
View 及其 Controller ,以及保存当前用户以供 home MVC 结构使用。
我尝试过的:
我能够在 main.java 类中创建 EvenHandler 并将其传递给 LoginView.java 类。并且在 LoginView.java 中触发该事件,main.java 中的事件也会被触发,并且场景将使用以下代码进行切换:
EventHandler<MouseEvent> changeToHome = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
try{
Parent root = FXMLLoader.load(getClass().getResource("Home.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
}catch (IOException err){
}
}
};
但是如果我这样做,我就找不到将经过身份验证的用户传递给 UserController(User MVC)
的方法。
我该如何去做呢?
最佳答案
我有一个应用程序,其中有一个登录表单,然后显示主屏幕。主屏幕中驻留着我的大部分代码。
我发现的解决方法(该应用程序不使用任何框架来完全实现 MVC)是将参数传递给 MainScreen Controller ,然后将其传播到其他 View 。我不确定这是否是您正在寻找的,但是,它可能会帮助您想象解决此问题的其他方法:
Stage stage = (Stage) root1.getScene().getWindow();
stage.close();
Stage stage2 = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("/SIBAC/View/Application/MainScreen.fxml"));
Parent newLoadedPane = loader.load();
MainScreenController MSController = loader.getController();
MSController.setUsrName(UsrName);
MSController.permission();
MSController.setLabelsLogOut();
MSController.startHome();
它位于 LoginController.java 文件内,该文件负责处理所有身份验证逻辑。当然,这会在成功登录后发生。
当然,有很多解决方案可以更好地完全实现 MVC 或其他模式(MVVMFX、Griffon、JRebirth 等)
关于java - 在javaFX中使用MVC模型更改 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59183312/