【问题标题】:How to parse data between two stages in JavaFX?如何在 JavaFX 中的两个阶段之间解析数据?
【发布时间】:2019-01-21 23:22:54
【问题描述】:

我有一个登录阶段,然后是主页阶段,我想为每个用户执行很多操作,所以我想要当前用户的用户 ID。 如何解析从登录阶段到主阶段的 ID 或用户名? 请注意,这里连接了一个公共数据库,当用户输入他的用户名和密码时,系统将检查数据是否真实并存在于数据库中。 这是我检查输入数据后的登录阶段控制器:

Stage HomeScreen = new Stage();
Parent root=null;

                        try {

root=FXMLLoader.load(getClass().getResource("Home.fxml"));

                        }
                        catch (IOException ex) {

Logger.getLogger(LoginScreen.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        Stage current = 
(Stage)username.getScene().getWindow();
                        Scene scene = new Scene(root);
                        HomeScreen.setScene(scene);
                        HomeScreen.initStyle(StageStyle.DECORATED);
                        HomeScreen.setTitle("Network Automation");
                        current.hide();
                        HomeScreen.show();

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/22178533/…
  • 我需要的东西太长太远了:/。我只需要知道@Vajk 的概念和方法是什么
  • @MohammadQabaha,这个确切的问题已经被问过并回答了几十次。有时阅读较长的答案将是学习的最佳方式......
  • 与您的问题无关:请学习 java 命名约定并遵守它们

标签: java javafx


【解决方案1】:

我认为这可以通过多种方式完成。您可以在静态变量中设置用户详细信息以跨应用程序访问。或者更合理的方法是将详细信息传递给主页控制器。

假设 Home.fxml 的控制器是 HomeController.java,其中有一个用于 userId 的 setter/getter。然后您的代码需要更改如下。

FXMLLoader myLoader = new FXMLLoader(getClass().getResource("Home.fxml"));
Parent root = myLoader.load();
HomeController homeController = (HomeController) myLoader.getController();
homeController.setUserId(userId); // set the userId in the controller...
// do the other stuff as usual...

【讨论】:

  • 我是这样,但是当我尝试在初始化方法中打印用户 ID 时,它为空。 @SaiDandem
  • 如果您说的是 HomeController 的初始化方法,那么是的,您不会在初始化方法中获取 userId。因为在初始化时不能设置userId(即myLoader.load())。
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
相关资源
最近更新 更多