gpt4 book ai didi

JAVAFX:在 FXML 之间传递数据不起作用

转载 作者:行者123 更新时间:2023-12-01 10:37:02 25 4
gpt4 key购买 nike

我在这里多次搜索答案,但没有得到我的解决方案。

就我而言:我想获取用户的输入并检查有效性。如果一切正常,我将从数据库中获取用户ID,并将该ID发送到另一个FXML,然后使用该ID在那里运行选择查询,将结果显示到 tableView 中。

在第二个 FXML( Controller )中,我使用 initialize() 方法将数据设置到 tableView 中,并使用 setId() 方法从之前的 FXML 接收用户 ID。但是,initialize() 方法在 setId() 方法之前被调用,并且由于 ID 为空而没有提供我所需的结果。

二手Passing Parameters JavaFX FXML该方法形成FXML之间传递数据。

最好的解决方案是什么?

仅供引用:目前我正在使用带有静态变量的额外类来存储 ID。

最佳答案

您可以使用 Controller 工厂在返回 Controller 实例之前初始化 id:

FXMLLoader loader = new FXMLLoader(url);
loader.setControllerFactory(c -> {
MyController controller = new MyController();
controller.setId(userId);
return controller;
});
...
Node n = loader.load();

这样,您还可以使用不提供默认构造函数的类作为 Controller 。可以使用更复杂的 Controller 工厂来连接模型和演示者 ( see MVP )。

另一种方法是在 setId 方法而不是 initialize 方法中修改场景的内容,这比使用 Controller 工厂更简单。

最佳解决方案是什么取决于您的需求和个人喜好。但是,如果可能的话,应避免使用static 成员传递数据。

关于JAVAFX:在 FXML 之间传递数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34629046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com