JavaFX 2.0 + FXML. La mise à jour de la scène valeurs à partir d'une Tâche différente
Je veux obtenir le contrôleur à partir d'une scène que j'ai chargé avec FXMLoader. Le cas d'utilisation est:
- Mon JSON gestionnaire reçoit un objet JSON
- La tâche que j'ai lancé une nouvelle Scène à l'aide de
Parent p = FXMLLoader.load(getClass().getResource("foo.fxml")); Scene scene = new Scene(p); stage.setScene(scene);
Après cela, j'ai la scène vide.
- Maintenant, je fais cela pour combler les composants
AnchorPane pane = (AnchorPane)((AnchorPane) scene.getRoot()).getChildren().get(0); for(Node node : pane.getChildren()){ String id = node.getId(); if(id.equals(NAME)){ ((TextField)node).setText(value); } }
Ma question, est-il un moyen plus facile de faire cela? J'ai un contrôleur spécifié dans le FXML
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="526.0" minWidth="356.0" prefHeight="526.0" prefWidth="356.0"
xmlns:fx="http://javafx.com/fxml" fx:controller="bar.foo">
Je veux obtenir de l'instance avec les valeurs de liaison (TextField on appelle dans ce cas)
Merci d'avance
OriginalL'auteur Javier | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
1) Vous pouvez obtenir le contrôleur de la
FXMLLoader
mais ne sais pas est-il possible deScene
:D'utiliser le
fooController
plus tard, dans une autre partie de votre code, vous pouvez utiliserNode#setUserData()
. Par exemple après le code ci-dessus:Ce qui donne une solution de contournement et un raccourci pour atteindre votre objectif.
2) Si votre nœud a un id, alors vous pouvez directement
Node#lookup()
plutôt que la construction d'une boucle for :pourquoi? Utilisez ce code au lieu de
FXMLLoader.load(getClass().getResource("foo.fxml"));
et vous obtiendrez le même volet que dans votre code.Mise à jour de la réponse. Jetez un coup d'oeil.
C'est exactement ce que je suis à la recherche d'Uluk Bly, merci!. @Sergey: Si vous utilisez le chargeur.getResource(...) des moments différents, à chaque fois que l'instance du contrôleur sera différent.
j'ai regardé dans l'histoire, et personne n'a suggéré de le faire. Mais nvm que vous avez obtenu votre problème résolu. 🙂
OriginalL'auteur Uluk Biy