2015-03-04 4 views
0

J'ai 2 fichiers FXML, avec 2 contrôleurs FXMLC séparés. Ils sont au même paquet.JavaFx - Contrôleurs

Je souhaite modifier une propriété d'habillage de pile dans la première fenêtre (first_controller.java) si je clique sur un bouton dans la deuxième fenêtre. Quelle est la solution la plus simple?

(J'ai essayé de fusionner les documents du contrôleur, et j'ai dit aux deux fxml d'utiliser le même contrôleur, à faire d'une manière simple, mais cela n'a pas fonctionné, peut-être que le controller.java peut utiliser seulement 1 source de FXML?)

Répondre

2

Je vous en prie s'il vous plaît ne pas simplement utiliser la voie statique juste à cause de la facilité! Theres une solution normale pour votre problème.

FXMLLoader loader = new FXMLLoader(this.getClass().getResource("Example.fxml")); 
Parent root = (Parent) loader.load(); 
YourController controller1 = loader.getController(); 
controllerOfSecondFXML.methodToPassYourController(controller1); 

Donc, si vous divisez le chargement du FXML vous pouvez obtenir les contrôleurs de vos FXMLs facilement et utiliser leurs méthodes. Juste obtenir le contrôleur comme je l'ai écrit ci-dessus et le passer à l'autre. C'est la manière orientée objet.

+0

Merci Juce, j'apprécie votre avertissement et je l'utiliserai dans le futur! Merci beaucoup –

0

Enfin j'ai découvert la solution.

Dans le premier contrôleur FXMLC, le StackPane doit être utilisé comme "Stackpane statique public". Dans ce cas, le contrôleur de l'autre FXML peut utiliser ceci, et changer la valeur de l'instance réelle.