Komunikacja między dwoma kontrolerami

Komunikacja między dwoma kontrolerami
GC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 249
0

Witam,
Mam kontrolery:
ManagmentUsersController.java
UserController.java

Pliki widoków:
ManagmentUsersView
UserAddEditView
<image></image>

Teraz chce w UserController mieć dostęp do elementów z ManagmentUsersController, a dokładnie do tableViewUser.
To w UserController dodałem:

Kopiuj
@FXML
private ManagmentUsersController managmentUserController;
 

A w pliku widoku UserAddEditView dodałem:

Kopiuj
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="302.0"
prefWidth="299.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.my.app.controllers.UserController">
<children>
<fx:include fx:id="managmentUser" source="/com/my/app/views/ManagmentUsersView.fxml" />

Jak to zrobię w ten sposób to psuje mi się widok UserAddEditView, tzn elementy nakładają się i tableView dalej się nie odświeża, a wcześniej było wszystko ok. Po prostu po dodaniu nowego użytkownika chce automatycznie odświeżyć widok(TableView), bo na razie mam od tego buttona w managmenUserController.
</children>

Kod tutaj: http://pastebin.com/yyySM9B4

SU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
1

Ja bym to inaczej rozwiązał. Uważam że nie potrzebna jest bezpośrednia komunikacja pomiędzy kontrolerami. To co chcesz uzyskać można rozwiązać poprzez wspólną listę dla tych dwóch kontrolerów. Stwórz klasę która będzie zawierała listę

Kopiuj
ObservableList<User> 

i będzie ona modyfikowana z UserController, ta sama lista musi zostać ustawiona w tebelce. Dzięki temu jak będzie modyfikowana lista z UserController, to powinno się automatycznie odświeżać w tabeli.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.