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 :

GridPane et @FXML?


Sujet :

JavaFX

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut GridPane et @FXML?
    Bonjour,
    Sur un projet j'avais un Gridpane créé dans mon fichier fxml. J'avais donc ajotué un lien fx:id avec le SceneBuilder pour récupérer le Gridpane dans mon contrôleur.
    Jusqu'ici rien d'anormal. Cependant je souhaitais effectuer un Gridpane qui pourra être modifié en lui ajoutant des lignes au besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @FXML
    private GridPane gridPaneCardFalsePoints;
     
    public void initialiseFalsePointsGridpane(){
            for (int i = 0; i < cardArrayList.size(); i++) {
                gridPaneCardFalsePoints.add(new Label("Card " + cardArrayList.get(i).getId()),i,0);
            }
    }
    Une erreur me sortait directement un java.lang.NullPointerException. J'ai compris qu'il n'y avait aucune instance de mon GridPane. Cependant si je crée une nouvelle instance de GridPane celui que j'avais
    créé dans le fxml devient bien inutile? J'aimerais être éclaircis sur le sujet. La plupart des tutoriels sur les GridPane n'utilisent pas l'attribut @FXML. Je me demandais donc si c'était possible.

    Bonne journée

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 236
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Si gridPaneCardFalsePoints est null c'est que ce nom ne correspond pas a la valeur contenue dans fx:id, tu as sans doute fait une faute de frappe en la recopiant.
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci de la réponse rapide. Non pas de faute de frappe. Mon problème venait du fait que mon Gridpane était null quand je ne l'utilisais pas dans la fonction fxml initialize().

    En ayant fait passer le Gridpane en static le problème est "résolu".

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 236
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Ce qui est normal puisque cette méthode est invoquée immédiatement après l'injection des variables. Toute manipulation avant (ex dans le constructeur) ne peut qu’amener ce résultat.
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Effectivement mais ça me posait problème sur ce sujet. Quand je lance ma nouvelle scene via mon application principale main avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void initialiseCardMobile(){
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainClass.class.getResource("../view/AddCardMobile.fxml"));
            try{
                AnchorPane addCardMobile = (AnchorPane) loader.load();
                this.campaignContainer.setCenter(addCardMobile);
                AddCardMobileMapping controller = new AddCardMobileMapping();
                controller.setMainApp(this);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    Je lance mon contrôleur puis affecte à celui ci l'objet main de cette classe afin qu'il puisse récupérer et interagir avec les données.

    En vérifiant, j'ai vu que la fonction initialize() se lance avant la fonction setMainApp().

    Dans ma fonction setMainApp() j'avais essayé d'implémenter la fameuse fonction initialiseFalsePointsGridpane() qui me permettait de l'initialiser, sauf que le Gridpane était tout le temps null.

    Pourtant setMainApp() se lance bien après initialize() dans tous les cas?

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 236
    Points : 22 360
    Points
    22 360
    Billets dans le blog
    48
    Par défaut
    Ce n'est pas à toi d'instancier le contrôleur, tu le récupères en invoquant la méthode idione du loader.
    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

Discussions similaires

  1. URL de fichier fxml
    Par la.lune dans le forum JavaFX
    Réponses: 6
    Dernier message: 02/05/2013, 02h22
  2. @FXML + include = null
    Par le y@m's dans le forum JavaFX
    Réponses: 12
    Dernier message: 06/07/2012, 08h05
  3. Fichier fxml dans netbeans
    Par ibiiztera dans le forum JavaFX
    Réponses: 3
    Dernier message: 10/06/2012, 14h57
  4. UI dans FXML
    Par fafoula dans le forum JavaFX
    Réponses: 4
    Dernier message: 29/02/2012, 00h05
  5. [HTML 5] Introduction code fxml dans page HTML sous Google Sites
    Par jj6401 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 21/02/2009, 15h53

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