Je programme une application avec javafx. C'est une application "multi-écran" avec un menu principal d'où je peux changer de scène.JavaFX inclut fxml dans fxml sans contrôleur
Mes scènes sont définies dans différents fichiers fxml. Parce que j'essaie d'utiliser le modèle mvc, je ne mets pas le contrôleur dans les fichiers fxml, j'utilise setController sur le FXMLloader.
Tout fonctionne bien, mais j'ai le menu principal et toutes ses fonctions pour l'onActions dans un contrôleur séparé et dans un fichier fxml séparé.
Je l'ai essayé avec
<fx:include source="Menubar.fxml"/>
et créé un contrôleur pour le fichier FXML, quand je mis le contrôleur dans le fichier FXML je ne peux pas compiler la source. Comment définir le contrôleur pour le fichier fxml inclus?
startpage.fxml obtient son contrôleur "Startpage" avec
FXMLLoader loader = new FXMLLoader(getClass().getResource("../fxml/startpage.fxml"));
loader.setController(new Startpage(m));
Pane mainPane = loader.load();
startpage.fxml
comprend menubar.fxml
, comment définir un contrôleur pour les commandes menubar maintenant? Ou comment inclure le menubarController facilement dans tous les autres contrôleurs?
Bon, j'ai besoin de beaucoup plus de connaissances, je ne comprends pas votre réponse maintenant. Modifier. j'espérais que ça pourrait être facile comme "startpagecontroller extends menucontroller" ou quelque chose comme ça. Je pense que je laisserai toujours toutes les méthodes pour la barre de menu dans chaque contrôleur et le code fxml aussi ..:/ – Garog
Je ne peux pas vraiment aider à moins que je sache quelles parties vous ne comprenez pas. Chaque fichier fxml est associé à un seul contrôleur * instance *. Le fichier fxml peut spécifier une * classe * pour le contrôleur.Ainsi, la fabrique de contrôleurs est une fonction qui indique au FXMLLoader comment obtenir l'instance du contrôleur à partir de la classe spécifiée. La duplication de méthodes ou la transformation d'un contrôleur en sous-classe ne vous aidera pas car vous disposez toujours de deux instances de contrôleur différentes (elles ne référenceront donc pas les mêmes données). –
Les plus gros problèmes pour moi sont de comprendre votre solution (juste un débutant java) et/ou d'adapter votre exemple à mon code. Je vais essayer d'expliquer un peu plus pourquoi j'ai besoin de tout cela. Tout d'abord, comme j'ai commencé le projet, chaque fichier fxml avait son propre contrôleur, c'était bien, je pouvais inclure chaque fxml dans l'autre sans perdre aucune fonction. par exemple, j'ai eu une page dans l'application "createproject" cette page contient quelques champs de texte et inclus la barre de menu. quand j'ai utilisé les menuitems pour passer la page (scène) à "settingsforcreateproject" j'ai inclus à nouveau la barre de menu dans le nouveau fxml. – Garog