Просто передать ссылку из родительского контроллера к контроллеру ребенка в 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"
, контроллер из child fxml будет введен в родительское поле контроллера с именем xController
.
Я пытаюсь использовать свойства JavaFX, потому что мне требуется привязка. Благодарю. – Marcos
Ницца SSCE, как использовать fx: include и аннотацию @FXML. – chooks