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 :

Controller et FXML


Sujet :

JavaFX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Siege
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Siege

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 29
    Points
    29
    Par défaut Controller et FXML
    Bonjour, je souhaite définire un controller: "Controleur" (qui se trouve dans le package: "jsylvie.kernel") pour mon fichier FXML, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <AnchorPane fx:controller="jsylvie.kernel.Controleur">
    Lorsque je l'éxecute :
    Erreur au chargement: javafx.fxml.LoadException:
    file:/jsylvie/kernel/IHM.fxml:16

    Eclipse indique "The controller 'Controleur' has no event slot 'actionPerformed'" pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button fx:id="ihmFx" mnemonicParsing="false" onMouseReleased="#actionPerformed" prefHeight="10.0" textAlignment="CENTER" />
    C'est seulement lorsque je marque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <AnchorPane fx:controller="jsylvie.jsylvie.kernel.Controleur">
    qu'il arréte d'indiquer une erreur ( ça ne fonctionne toujours pas biensûr ).

    PS: Mon projet s'appel "Module_Kernel" et le dossier contenent mon package s'appel "jsylvie".

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Siege
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Siege

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 29
    Points
    29
    Par défaut
    J'ai modifié le nom de mon package en : "jsylvie_kernel" et sa plante toujours, du coup sa ne viens pas du "." apparament.
    Voila le code qui me permet de charger le FXML :
    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 JFXPanel start() throws Exception {
    		// Création du conteneur Swing pour JavaFX
    		JFXPanel fxPanel = new JFXPanel();
    		try{
    			// Localisation du fichier FXML.
    			 URL url_fxml = getClass().getResource("IHM.fxml");
    			// Création du loader.
    			 FXMLLoader fxmlLoader = new FXMLLoader(url_fxml);
    			// Chargement du FXML.
    			 AnchorPane root = (AnchorPane) fxmlLoader.load();
    			// Création de la scène.
    			 Scene scene = new Scene(root, 700, 600);
    			fxPanel.setScene(scene);
    			// Accès au controleur
    			// Controleur controleur = (Controleur) fxmlLoader.getController();
    		}catch(IOException ex) {
    			System.err.println("Erreur au chargement: " + ex);
    		}
    		return fxPanel;
    	}
    Lorsque j'utilise SceneBuilder pour créer le lien entre le controller et le FXML il me propose "jsylvie_kernel.Controleur" mais a l'execution je rencontre l'erreur:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    javafx.fxml.LoadException: 
    file:/home/jbr/GIT_WORK/matis_dev_javafx/module_Kernel/compilation/jars/Kernel.jar!/jsylvie_kernel/IHM.fxml:15
     
            at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
            at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
            at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922)
            at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971)
            at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220)
            at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744)
            at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
            at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
            at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
            at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
            at jsylvie_kernel.Vue_FX.start(Vue_FX.java:40)
            at jsylvie_kernel.Kernel.actionPerformed(Kernel.java:1843)
            at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
            at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
            at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at javax.swing.JComponent.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
            at java.awt.EventQueue.access$500(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.awt.EventQueue$3.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.awt.EventQueue$4.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: jsylvie_kernel.Controleur
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Caused by: java.lang.ClassNotFoundException: jsylvie_kernel.Controleur
    Comment sont organisés les packages dans ton appli ?
    Est-ce que cette classe est au bon endroit quand tu navigues dans ton JAR (tu peux l'ouvrir avec n'importe quel logiciels qui gère les fichiers ZIP).
    Est-ce que la classe est public, private, etc. ?
    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

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Siege
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Siege

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 29
    Points
    29
    Par défaut
    Bonjour,
    Citation Envoyé par bouye Voir le message
    Comment sont organisés les packages dans ton appli ?
    Il y a :
    -> le projet (Module_Kernel)
    --> les dossiers (jsylvie, Icons ...)
    ---> les packages (jsylvie_kernel, ...)
    ----> les classes + FXML
    Citation Envoyé par bouye Voir le message
    Est-ce que cette classe est au bon endroit quand tu navigues dans ton JAR (tu peux l'ouvrir avec n'importe quel logiciels qui gère les fichiers ZIP).
    Dans le JAR il y a un dossier "META-INF" (qui contient "MANIFEST.MF") et un autre dossier "jsylvie_kernel" qui contien les classes du package du même nom :
    -> le dossier (jsylvie_kernel)
    --> les classes + FXML
    A mon avis le JAR est bien constitué
    Citation Envoyé par bouye Voir le message
    Est-ce que la classe est public, private, etc. ?
    La classe "Controleur" est public, elle a 2 constructeurs, un public par défaut et et un avec 3 paramétres.

    J'ai réussie a afficher le FXML avec le controleur dans un projet appart, je vais les comparer et je reviens !!!
    Edit: Je n'ai pas réussie a trouver l'erreur. J'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?import jsylvie.kernel?>
    et le msg d'erreur est devenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException
            at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2899)
            at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2846)
            ... 44 more

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Siege
    Inscrit en
    Janvier 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Siege

    Informations forums :
    Inscription : Janvier 2017
    Messages : 18
    Points : 29
    Points
    29
    Par défaut
    Bonjour, je suis finalement parvenu a relier le controleur au FXML, en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    votreFxmlLoader.setController(votreControleur);
    En se qui concerne erreur de déclaration du controleur directement dans le FXML, mystére et boule de gomme ...

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

Discussions similaires

  1. [VB6] [Réseau] Prendre le contrôle d'un téléchargement
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 14h18
  2. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  3. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  4. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  5. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09

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