3
此問題與this類似,但我需要訪問父成員(不是控制)。我不知道是否有可能不使用依賴注入。如何從子控制器訪問父成員控制器
例如,我有一個Parent有一個成員調用User,我需要從Child Controller訪問User。
此問題與this類似,但我需要訪問父成員(不是控制)。我不知道是否有可能不使用依賴注入。如何從子控制器訪問父成員控制器
例如,我有一個Parent有一個成員調用User,我需要從Child Controller訪問User。
只是通過從父控制器在父控制器的initialize()
方法子控制器參考:
ParentController.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 ;
}
}
你也可以使用JavaFX屬性而不是普通對象來實現,如果你想綁定等:
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);
}
}
ChildController.java:
public class ChildController {
private ObjectProperty<User> user = new SimpleObjectProperty<>();
public ObjectProperty<User> userProperty() {
return user ;
}
}
像往常一樣,父文件FXML需要設置fx:id
上fx:include
標籤,使得所裝載的控制器被注入到
<fx:include source="/path/to/child/fxml" fx:id="child" />
該規則是與fx:id="x"
,控制器從子fxml將被注入名爲xController
的父控制器字段。
我嘗試使用JavaFX屬性,因爲我需要綁定。謝謝。 – Marcos 2014-10-30 14:12:52
如何使用fx:include和@FXML註釋的好SSCE。 – chooks 2014-10-30 18:36:15