Mar*_*cos 4 controller javafx-8
这个问题与此类似,但我需要访问父成员(不是控件).我不知道是否可以不使用依赖注入.
例如,我有一个父有一个成员调用用户,我需要从子控制器访问用户.
Jam*_*s_D 12
只需将父控制器中的引用传递给父控制器方法中的子控制器initialize():
ParentController.java:
public class ParentController {
@FXML
private ChildController childController ;
private User user ;
public void initialize() {
user = ...;
childController.setUser(user);
}
}
Run Code Online (Sandbox Code Playgroud)
ChildController.java:
public class ChildController {
private User user ;
public void setUser(User user) {
this.user = user ;
}
}
Run Code Online (Sandbox Code Playgroud)
如果要绑定等,也可以使用JavaFX Properties而不是普通对象执行此操作:
ParentController.java:
public class ParentController {
@FXML
private ChildController childController ;
private final ObjectProperty<User> user = new SimpleObjectProperty<>(...) ;
public void initialize() {
user.set(...);
childController.userProperty().bind(user);
}
}
Run Code Online (Sandbox Code Playgroud)
ChildController.java:
public class ChildController {
private ObjectProperty<User> user = new SimpleObjectProperty<>();
public ObjectProperty<User> userProperty() {
return user ;
}
}
Run Code Online (Sandbox Code Playgroud)
像往常一样,父fxml文件需要fx:id在fx:include标记上设置,以便将加载的控制器注入到
<fx:include source="/path/to/child/fxml" fx:id="child" />
Run Code Online (Sandbox Code Playgroud)
规则是,fx:id="x"来自子fxml的控制器将被注入具有名称的父控制器字段xController.