gpt4 book ai didi

controller - 如何从子 Controller 访问父成员 Controller

转载 作者:行者123 更新时间:2023-12-03 15:22:40 29 4
gpt4 key购买 nike

这个问题类似于 this ,但我需要访问父成员(不是控制)。我不知道是否可以不使用依赖注入(inject)。

例如,我有一个父级,有一个成员调用用户,我需要从子 Controller 访问用户。

最佳答案

只需将父 Controller 的引用传递给父 Controller 的 initialize() 中的子 Controller 即可方法:

父 Controller .java:

public class ParentController {

@FXML
private ChildController childController ;

private User user ;

public void initialize() {
user = ...;
childController.setUser(user);
}
}

ChildController.java:
public class ChildController {

private User user ;

public void setUser(User user) {
this.user = user ;
}
}

如果您想要绑定(bind)等,您也可以使用 JavaFX 属性而不是普通对象来执行此操作:

父 Controller .java:
public class ParentController {

@FXML
private ChildController childController ;

private final ObjectProperty<User> user = new SimpleObjectProperty<>(...) ;

public void initialize() {
user.set(...);
childController.userProperty().bind(user);
}
}

ChildController.java:
public class ChildController {

private ObjectProperty<User> user = new SimpleObjectProperty<>();

public ObjectProperty<User> userProperty() {
return user ;
}
}

像往常一样,父 fxml 文件需要设置 fx:idfx:include标记,以便将加载的 Controller 注入(inject)到
<fx:include source="/path/to/child/fxml" fx:id="child" />

规则是 fx:id="x" ,来自子 fxml 的 Controller 将被注入(inject)到名为 xController 的父 Controller 字段中.

关于controller - 如何从子 Controller 访问父成员 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653562/

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