IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Include, ca fonctionne, mais je ne comprends pas pourquoi.


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut Include, ca fonctionne, mais je ne comprends pas pourquoi.
    Bonjour,

    J'ai une application JavaFx.
    J'ai fais une fenetre et pour ne pas complexifier les fichiers, j'ai choisi de faire des "include" pour separer certaines parties du code et rendre tout cela plus lisible.

    Dans JavaFx on utilise des "Id" et des balise @FXML pour lier les differents composants mais dans mon cas, les liens ne correspondent pas directement et fonctionne comme si tel etait le cas .
    J'aimerais avoir l'explication pour les nuls si vous la connaissez :
    (je precise ma question en bas de page)

    pour info, jai lu la doc sur les nested controller que voici :
    http://docs.oracle.com/javafx/2/api/...ed_controllers


    Les bouts de code concerné :

    mon main principal (FxFenetre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public void start(Stage primaryStage) {
     
     
    	        primaryStage.setTitle("Amaz'sTool's");
    	        controller = new FxFenetreController();
     
     
     
    	        FXMLLoader loader = new FXMLLoader(getClass().getResource("fxFenetre.fxml"));
    	        loader.setController(controller);
    	      //  loader.setLocation(getClass().getResource("fxFenetre.fxml"));//getClass().getResource("FxFenetre.fxml")
    	        Parent myPane = null;
    			try {
    				myPane = (Parent) loader.load();
    			} catch (IOException e) {e.printStackTrace();
    			}
    	        Scene myScene = new Scene(myPane);
    	        myScene.getStylesheets().add(FxFenetre.class.getResource("fxconsole.css").toExternalForm());
     
    ETC ... ETC ...
    Ensuite je declare le Controller de l'include dans mon controller principal (FxFenetreController) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
     
     
    	    // l'include
     
    	    @FXML
    	    private FxOngletParametresController fxOngletParametresController;
     
     
     
    	    /////
    	    @FXML
    	    void initialize() {
    	    	this.fxFenetreController = this;
    	        assert rootScrollpane != null : "fx:id=\"rootScrollpane\" was not injected: check your FXML file 'fxFenetre.fxml'.";
    	        casesInit();
     
    	        fxOngletParametresController.setB(b); 
     
     
    etc etc ...
     
     
    	    }

    ensuite dans le FXML de ce controller je met l'include avec un id et la source FXML (fxFenetre.fxml)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <content>
     
                    	<fx:include fx:id="fxOngletParametres" source="fxOngletParametres.fxml"/>  
     
    </content>
    Ensuite dans le FXML de mon include je declare le controler : (fxOngletParametres.fxml)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <VBox styleClass="d" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="botpackage.FxOngletParametresController">
     
    </VBox>


    Ma question est la suivante :




    Comment JavaFX fait t'il le lien entre cela dans le fichier FXML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <fx:include fx:id="fxOngletParametres" source="fxOngletParametres.fxml"/>
    et cela dans son Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
     
    	    @FXML
    	    private FxOngletParametresController fxOngletParametresController;
     
     
     
    	    /////
    	    @FXML
    	    void initialize() {
    	    	this.fxFenetreController = this;
    	        assert rootScrollpane != null : "fx:id=\"rootScrollpane\" was not injected: check your FXML file 'fxFenetre.fxml'.";
    	        casesInit();
     
    	        fxOngletParametresController.setB(b);




    Je ne met meme pas le @FXML de l'id (fxOngletParametres) et si j'enleve " fx:id="fxOngletParametres" " , cela ne marche plus....
    Je ne comprends pas comment il fait le lien lui meme...

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par villame Voir le message
    Ensuite je declare le Controller de l'include dans mon controller principal (FxFenetreController) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // l'include
     
    	    @FXML
    	    private FxOngletParametresController fxOngletParametresController;
     
    	    /////
    	    @FXML
    	    void initialize() {
    	    	this.fxFenetreController = this;
    	        assert rootScrollpane != null : "fx:id=\"rootScrollpane\" was not injected: check your FXML file 'fxFenetre.fxml'.";
    	        casesInit();
     
    	        fxOngletParametresController.setB(b); 
     
     
    etc etc ...
     
     
    	    }
    Salut,
    Franchement j'ai perdu le bout du fil à cette étape et je n'ai même pas lu la suite. Pourquoi tu injectes ton contrôleur dans lui-même ?????????????
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    afin de transmetre l'argument a une autre fonction :
    notament comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console = new fxConsoleExperimentale(fxFenetreController); // console.start();
    Je simplifierai mon message ce soir, je me doutais un peu qu'avec un code partiel ce serait un peu tendu de suivre ma question...

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    J'vois pas le rapport (this serai très bien à la place d'une référence à soi-même) et, de plus, dans ce cas pourquoi cette variable est-elle annotée @FXML ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    tout à fais, mais j'avais fais cela pour avoir un texte plus lisible pour moi. pour le fxml, c'est une erreur, mais je ne crois pas que cela soit lié au soucis, je refait ma question ce soir quoi qu'il en soit merci pour tes réponses

  6. #6
    Membre averti
    Homme Profil pro
    ouvrier
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ouvrier

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    Bonjour,
    Suite a une lecture plus attentive de mon code, j'ai "résolu" mon incompréhension.

    Ce post a été fait avant de réfléchir et n'a pas grand sens à posteriori, veuillez m'excuser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ca marche mais je ne comprend pas pourquoi
    Par murgen23 dans le forum Composants
    Réponses: 5
    Dernier message: 14/11/2008, 13h25
  2. Cargo - Ca fonctionne mais je ne sais pas pourquoi.
    Par RémyYves dans le forum Maven
    Réponses: 1
    Dernier message: 07/02/2008, 13h13
  3. Réponses: 4
    Dernier message: 07/01/2008, 23h48
  4. Ma jolie macro fonctionne mais je ne comprends pas pourquoi ^
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/07/2007, 06h06
  5. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo