java - 在javaFX中使用MVC模型更改 View

标签 java javafx model-view-controller

我设计了两种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/

相关文章:

java - 在 Java 中使用列表

java - 如何在 R 或 java 中进行栅格数据同化( 3dVar )?

java - 在 Hbox 中找到按下的节点的位置

ios - AFNetworking 请求是否应该放在与 View Controller 分开的 NSObject 中?

java - 为 jvm 使用所有可用的系统内存

java - 如何使用对象将数据添加到 JavaFX 中的空 TableView 中?

java - 如何序列化 ObservableList

swift - 如何用MVC模式构建可移动对象?

ruby-on-rails - 在MVC中,数据库是模型的一部分吗?

java - 在 Java 运行时为 native 库添加新路径