JavaFX classe contrôleur de scène de référence
Est-il possible de l'obtenir de la Scène objet d'une FXML fichier chargé à partir de la classe associée contrôleur.
Je suis en train de faire quelque chose comme ceci:
@FXML
private AnchorPane anchor;
Scene scene = anchor.getScene();
mais j'aimerais une solution qui ne fait pas référence à la AnchorPane de contrôle.
OriginalL'auteur nailujed | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
Pourquoi pas? Le contrôleur est une classe abstraite, il n'est pas au courant à propos de l'INTERFACE utilisateur, sauf si vous délibérément de lui faire savoir.
Nœuds (y compris AnchorPane) sont une autre histoire, ils n'existe pas en dehors de scène graphique. Il est donc parfaitement légitime de demander Nœud à propos de son parent ou de la scène.
Si vous voulez continuer à gérer séparément il y a des approches suivantes:
vous pouvez créer un contrôleur et un jeu de scène après le chargeur. Il suffit de noter que, au moment
initialize()
appelé ce ne serait pas encore initialisé.Vous pouvez créer un fxml de contrôle qui permettra d'intégrer le contrôleur et il peut simplement appeler
getScene()
pour lui-même. Voir un exemple ici: https://stackoverflow.com/a/10718683/1054140il fixe pour vous
Sergey, merci. C'est un bon exemple de code.
FXMLLoader.load() est une méthode statique donc fxmlLoader.getController() renvoie la valeur null. Comment puis-je résoudre ce problème?
OriginalL'auteur Sergey Grinev
J'ai essayé votre réponse, mais il ne fonctionne pas, j'ai trouvé la raison ici:
JavaFX: Comment obtenir de l'étape de contrôleur au cours de l'initialisation?
après le commentaire:
ne pas utiliser la méthode statique charge
mais au lieu d'utiliser instancié chargeur de la méthode de
J'ai édité accepté de répondre à corriger, pour le bénéfice des futurs utilisateurs qui vont le lire. Le plus probable, c'était une faute de frappe alors que l'affichage de la réponse.
oh merci, bien que u manqué une entrée de fxmlLoader, j'ai corrigé ça.
OriginalL'auteur kernel255