2014-10-30 7 views
3

Этот вопрос похож на this, но мне нужно получить доступ к родительскому члену (а не к управлению). Я не знаю, можно ли обойтись без использования Injection Dependency.Как получить доступ к контроллеру родительского элемента из дочернего контроллера

Например, у меня есть родительский аккаунт с пользователями-членами. Мне нужно получить доступ от дочернего контроллера к User.

ответ

8

Просто передать ссылку из родительского контроллера к контроллеру ребенка в 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.

+0

Я пытаюсь использовать свойства JavaFX, потому что мне требуется привязка. Благодарю. – Marcos

+0

Ницца SSCE, как использовать fx: include и аннотацию @FXML. – chooks

Смежные вопросы