javafx变量TWO控制器之间的数据传输(设置和获取不同控制器中的数据) - 更新

时间:2014-06-13 16:17:07

标签: java javafx javafx-2 javafx-8

我正在尝试将变量从一个控制器传输到另一个控制器,但我没有得到正确的输出:

我的代码:

   public class CustomControl extends AnchorPane implements Initializable {
    String customId;

    public CustomControl() {
        //if you want to set a FXML
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/res/customControl.fxml"));
        //Defines this class as the controller
        fxmlLoader.setRoot(this);
        //this.getStylesheets().add("/res/style.css"); <- if you want to set a css
        fxmlLoader.setController(this);
        try {
            fxmlLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }

    }
        public String getCustomId() {
            return customId;
        }
    public void setCustomId(String customId) {
        return this.customId = customId;
    }
    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
          //Initializes the controller
    }
}

在其他控制器上设置CustomId变量

CustomControl c = new CustomControl();
c.setCustomId("StackOverflow");

从其他控制器获取CustomId变量

CustomControl c = new CustomControl();
c.getCustomId();
System.out.Println(c.getCustomId());

它给我输出

null

但要求是

StackOverflow

我知道同样的问题已经被问到Link所以,不要将其标记为重复

因为 在我的问题中firstcontroller.java有两个控制器

 CustomControl c = new CustomControl();
    c.setCustomId("StackOverflow");

现在在secondcontroller.java

CustomControl c = new CustomControl();
c.getCustomId();
  System.out.Println(c.getCustomId());

因为我们在不同的控制器中设置数据所以它给我输出

null

请帮助我。 谢谢。

1 个答案:

答案 0 :(得分:1)

在secondcontroller.java中,您要实例化 new 对象, c。

CustomControl c = new CustomControl();
c.getCustomId();
  System.out.Println(c.getCustomId());

引用 firstcontroller.java 中的同名对象。如果您希望在 firstcontroller.java 中访问它,则需要将 firstcontroller.java 中实例化的对象 c 传递给 secondcontroller.java