【问题标题】:Pass the value of stage to another controller of javafx class when load the FXML file [duplicate]加载FXML文件时将stage的值传递给javafx类的另一个控制器[重复]
【发布时间】:2016-10-03 10:08:05
【问题描述】:

根据我的想法当下面两行代码在 javaFX 中由 Compiler 执行时, 第一行只是设置 ABC.fxml 文件的位置。 而在第二行中,当执行loader.load()时,编译器生成了ABC.fxml文件的控制器的一个对象,即ABCcontroller.java。并调用它。

  loader.setLocation(MyApplicationClass.class.getResource("/demo/view/ABC.fxml"));
  rootDisplay = (BorderPane) loader.load();

在此期间(在 loader.load())我想将阶段值从我当前的类文件(mainclass.java)传递给 ABCcontroller.class 的这个对象。因为我需要这个值。

我见过

loader.load(URL Location, ResourceBundle resources,.....)

我们可以通过给参数传递stage的值吗?我不知道这个怎么调用或者这个参数有什么用。

请建议我如何以这种方式实现或以其他想法来做同样的事情。

【问题讨论】:

  • “在这段时间里(loader.load())我想通过舞台......”。你真的需要它发生在那个时候,还是可以在load 返回之后发生?重复的问题向您展示了如何在 load 完成后将值传递给控制器​​。

标签: java javafx fxml fxmlloader


【解决方案1】:

您可以执行以下操作将参数传递给另一个控制器:

在你的控制器类中创建一个接受参数的方法,例如:

public void initVariables(String variable) {
    this.variable = variable;
}

调用loader.load()之后的方法:

WindowController controller = fxmlLoader.<WindowController>getController();
controller.initVariables("Test");

WindowController 替换为您的控制器类的名称。

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多