当前位置: 首页 > 面试题库 >

加载FXML时将参数传递给控制器​​

王修为
2023-03-14
问题内容

我有一个登录屏幕,我想将登录ID从LoginController传递到MainController,因此我可以访问一些功能来更改密码和其他功能。

我这样加载控制器:

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

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

stage.setScene(scene);

stage.show();

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


问题答案:

用FXMLLoader加载控制器后,可以在调用show()方法之前调用该控制器的成员。必须获取对刚刚调用的控制器的引用,然后从那里调用set()方法(或直接访问该属性(如果已定义)。

从示例中,让我们假设与Main.fxml关联的控制器称为MainController,并且MainController具有一个userId属性,该属性定义为int。它的设置方法是setUser(intuser)。因此,从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();

MainController.java:

public void setUser(int userId){
    this.userId = userId;
}

MainController.java:

//You may need this also if you're getting null
@FXML private void initialize() {

    Platform.runLater(() -> {

        //do stuff

    });

}


 类似资料:
  • 我这样加载控制器: fxml绑定到MainController.java。有没有一种方法可以传递我需要的用户ID,并在控制器的initialize()方法上访问它?

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

  • 有没有办法将参数传递给fxml文件中的onAction方法?或者,我可以以某种方式获得调用onAction方法的组件的fx:id吗? 我有几个按钮可以做同样的事情,比如说5个带有ID button1-button5的按钮,当按下时,应该打印相应的数字1-5。我不希望有5个onAction方法与这个变量相同。 感谢您的帮助,

  • 问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它

  • 我试图将一个参数传递给我的@RESTController-Spring Boot类。 在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。 Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。 我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。 尽管我可以定义第二个构造函数,但

  • 问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更