当前位置: 首页 > 知识库问答 >
问题:

加载FXML[duplicate]时向控制器传递参数

邰钟展
2023-03-14

我这样加载控制器:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/Main.fxml"));     

Parent root = (Parent)fxmlLoader.load();          
Scene scene = new Scene(root); 

stage.setScene(scene);    

stage.show();   

fxml绑定到MainController.java。有没有一种方法可以传递我需要的用户ID,并在控制器的initialize()方法上访问它?

共有1个答案

岳迪
2023-03-14

在用FXMLLoader加载控制器之后,可以在调用show()方法之前调用所述控制器的成员。必须获得对刚才调用的控制器的引用,并从那里调用set()方法(或者直接访问属性,如果定义为public)。

在示例中,让我们假设与main.fxml关联的控制器称为MainController,并且MainController有一个userId属性,定义为int。它的set方法是setUser(int user)。因此,从LoginController类:

loginController.java:

// User ID acquired from a textbox called txtUserId
int userId = Integer.parseInt(this.txtUserId.getText());

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/Main.fxml"));     

Parent root = (Parent)fxmlLoader.load();          
MainController controller = fxmlLoader.<MainController>getController();
controller.setUser(userId);
Scene scene = new Scene(root); 

stage.setScene(scene);    

stage.show();   
public void setUser(int userId){
    this.userId = userId;
}
//You may need this also if you're getting null
@FXML private void initialize() {
        
    Platform.runLater(() -> {

        //do stuff

    });
        
}
 类似资料:
  • 问题内容: 我有一个登录屏幕,我想将登录ID从LoginController传递到MainController,因此我可以访问一些功能来更改密码和其他功能。 我这样加载控制器: Main.fxml绑定到MainController.java。有没有一种方法可以传递所需的用户ID,并在控制器的initialize()方法上对其进行访问? 问题答案: 用FXMLLoader加载控制器后,可以在调用sh

  • 我做了逻辑包,但是UI仍然有问题。我想做的是允许用户输入作业数量,在下一个窗口中,我想显示文本字段,他可以在其中输入每个作业的执行时间,换句话说,我应该显示文本字段n time,作为用户给定的作业数量。 这是我为第一个界面所做的: 这是我的控制器: 我不知道是否有方法将参数从控制器传递到FXML文件,并在FXML中执行循环。。请帮忙

  • 我无法完成的任务是将参数从一个场景传递到另一个场景并返回。 或者换句话说:主控制器加载子控制器的fxml,将对象传递给子控制器,切换场景。不得有两扇开着的窗户。工作完成后,副控制器将场景切换回主控制器,并将一些对象传递回主控制器。这就是我失败的地方。 这个问题和这个问题很相似但仍然没有答案。传递参数JavaFX FXML在注释中也提到了: 有没有人知道如何在没有外部库的情况下实现这一点?

  • 问题内容: 因此,我正在为学校项目编码此聊天客户端,现在我需要使用JavaFX实现GUI。我已经在Scene Builder中构建了外观简洁的GUI。现在,无论何时客户端收到一条消息,它都应该在控制器中调用一个方法,以将接收到的字符串附加到TextField上。 但是,当我尝试从FXML文件加载控制器时,出现此错误: 这是获取控制器并在其中调用方法的代码: 最后,我的FXML文件: 加载徽标图像时

  • 我在使用thymeleaf 3将参数从html传递到spring mvc 4控制器时遇到了麻烦。 我还有一个类Currency,它带有字段“id”和“name”,以及它们的getter和setter。现在使用这段代码,我得到一个错误: 严重:路径为[]的上下文中servlet[dispatcher]的servlet.service()引发异常[请求处理失败;嵌套异常为org.thymeleaf.e

  • 问题内容: 当我在JavaFX中调用FXMLLoader#load()时会发生什么? 假设FXML控制器扩展了具有构造函数的类。是否可以保证构造函数将被调用?如果没有,将如何创建该对象的新实例?例如,在下面的代码中,是否将调用TextField()构造函数? 我已经尝试过搜索这个,但是除了“从FXML文档中加载对象层次结构”之外,似乎没有关于它的文档。来自http://docs.oracle.co