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 :

Besoin d'aide pour passage de swing a javaFX


Sujet :

JavaFX

  1. #1
    Nouveau Candidat au Club Avatar de veikoon
    Homme Profil pro
    Esiee Paris
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Esiee Paris

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour passage de swing a javaFX
    Bonjour a tous, j'ai un petit soucis dans le cadre de mes études, et pour un travail supplémentaire fait pour mon professeur je cherche a transformer un programme codé en swing en javaFX (pas une maigre affaire). J'ai réussi a le rendre parfaitement focntionnel mais comme qui dirait "sale", mon programme est, je pense hors de toutes les normes de programmation x)

    En fait la principale difficulté que je rencontre, c'est que en swing on peut créer une interface en créant un nouvel objet de la classe dans laquelle on a fait son GUI, seulement le javaFX est complètement différent. Et la ou au paravent pour afficher une message j'appelais une fonction println de la classe qui gère le gui depuis la classe principale et bien sous javaFX on ne peut pas appeler de méthodes de la classe javaFX depuis l'exterieur.

    La seule solution que j'ai trouvé est alors de faire des return depuis la classe principale que j’appelle donc depuis ma classe javaFX qui peut alors les afficher.

    J'aimerais savoir si il est possible de créer une référence vers la classe JavaFX qui me permettrait donc d'appeler des méthodes de ladite classe.

    EDIT - liens suspicieux retirés

    bien cordialement, un collègue qui ne sait plus ou donner de la tête.

  2. #2
    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
    Citation Envoyé par veikoon Voir le message
    En fait la principale difficulté que je rencontre, c'est que en swing on peut créer une interface en créant un nouvel objet de la classe dans laquelle on a fait son GUI, seulement le javaFX est complètement différent. Et la ou au paravent pour afficher une message j'appelais une fonction println de la classe qui gère le gui depuis la classe principale et bien sous javaFX on ne peut pas appeler de méthodes de la classe javaFX depuis l'exterieur.

    La seule solution que j'ai trouvé est alors de faire des return depuis la classe principale que j’appelle donc depuis ma classe javaFX qui peut alors les afficher.
    J'ai rien compris mais je ne vois pas en quoi le fait que tu ais des méthodes println() dans tes classes Swing n'est pas possible en JavaFX. La plupart des classes de contrôles ou de mise en page sont également extensible donc c'est tout a fait possible de rajouter les fonctions qu'il manque. Et dans le pire des cas tu te fais une classe utilitaire dédiée qui fait la même chose et que tu invoques de partout.

    EDIT - et plutôt que de poster un projet qui nécessite un accès verrouillé a un Google doc, essaie plutôt de créer un exemple simple en Swing et un truc équivalent en FX et de le poster directement dans ton message avec la balise [CODE].
    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
    Nouveau Candidat au Club Avatar de veikoon
    Homme Profil pro
    Esiee Paris
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Esiee Paris

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    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
     
    //Ma classe javaFX
     
    public class UserInterfaceFX extends Application 
    { 
    @Override public void start(Stage primaryStage) throws Exception 
        {
            // Configuration de l'interface.
     
            this.initFX();     // Initialisation.
            this.regroupFX();  // Enboitement des Layout.
            this.confFX();     // Configuration des éléments affichés.
            this.eventFX();    // Configuration des évenements.
     
            Scene vScene = new Scene(this.aMainLayout , 800 , 840);    // Création de la scène prend comme paramètre le Layout général et les dimensions de la fenêtre.
     
            primaryStage.setScene(vScene);            // On associe la scène comme la scène courante (option utilisé si on veut plusieurs fenêtre).
            primaryStage.setTitle("Zuul project");    // Titre de la fenêtre.
            primaryStage.show();                      // Affichage de l'interface.
            this.aAffiche.bienvenue();     // Affichage du message de bienvenue.
        }
     
        /**
         * Permet d'afficher du texte dans la zone prévu a cet effet.
         */
        public void println(final String pText){
            this.aText.appendText(pText+"\n");    // On ajoute le texte passé en paramètre dans la zone de texte.
        }
    }
     
    //Une classe quelconque :
     
    public classe Affiche{
        private UserInterfaceFX aGui;
     
        public Affiche(){
             this.aGui = new UserInterfaceFX();
        }
     
        public void bienvenue(){
             this.aGui.println("bienvenue"); // Ici j'obtiens une erreur java null pointer exception.
        }
    }
    J'aimerais pouvoir appeler la méthode println() de la classe d'application de javafx depuis une classe exterieur. En faisant de cette manière j'obtiens une exception java null pointer exception alors même que je possède bien des références vers les deux classes. Un fonctionnement de javaFx m'échappe alors.

  4. #4
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Citation Envoyé par veikoon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.aAffiche.bienvenue();     // Affichage du message de bienvenue.
    Quand est-ce que tu instancie aAffiche ? Si tu ne le fais pas, il est null et donc tu obtiens une NullPointerException.

    Quand est-ce que tu appelles this.aAffiche.Affiche() ? Si tu ne le fais pas, tu n'instancie pas l'attribut aGui, qui est donc null. Ce qui fait que quand tu appelles .println() dessus tu obtiens une NullPointerException.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.aGui = new UserInterfaceFX;
    Il manque des parenthèses ici quand tu appelles le constructeur de UserInterfaceFX.
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  5. #5
    Nouveau Candidat au Club Avatar de veikoon
    Homme Profil pro
    Esiee Paris
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Esiee Paris

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Drowan Voir le message
    Quand est-ce que tu instancie aAffiche ? Si tu ne le fais pas, il est null et donc tu obtiens une NullPointerException.

    Quand est-ce que tu appelles this.aAffiche.Affiche() ? Si tu ne le fais pas, tu n'instancie pas l'attribut aGui, qui est donc null. Ce qui fait que quand tu appelles .println() dessus tu obtiens une NullPointerException.


    Il manque des parenthèses ici quand tu appelles le constructeur de UserInterfaceFX.
    Effectivement les parenthèses je les ai oublié en faisant un résumé de mon code c'est de ma faute une erreur de non relécture mais elle n'est pas dans mon code.

    J'instancie la classe Affiche dans ma fonction initFX() que j'ai volontairement non réecrite, pour résumer mon code, j'ai bien vérifier mais les deux classes sont correctement initialisé et déclaré.

  6. #6
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Et est-ce que tu as vérifié this.aText ?
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  7. #7
    Nouveau Candidat au Club Avatar de veikoon
    Homme Profil pro
    Esiee Paris
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Esiee Paris

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Drowan Voir le message
    Et est-ce que tu as vérifié this.aText ?
    En fait j'ai l'erreur précisemment sur le this.aText de la méthode println, et j'appelle déjà cette méthode au sein même de la classe javaFx et elle fonctionne parfaitement, c'est uniquement quand j'essaye de l'appeler depuis l'exterieur que ca capote, comme si les éléments de javafx ne pouvaient pas être modifié depuis l'exterieur de ladite classe.

    J'ai trouvé d'ou cela vient, dans ma classe Affiche j'ai ecris this.aGui = new UserInterfaceFX(); mais je n'ai pas de constructeur dans ma classe Javafx, seulement je ne sais pas comment en faire, est il possible de lancer l'interface depuis une autre classe ? Je ne crois pas qu'il soit possible de créer d'objet javafx c'est la le principal problème.

  8. #8
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Et pourquoi tu n'utiliserais pas l'instance déjà existante de UserInterfaceFX ?

    Dans iniFX() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.aAffiche.Affiche(this);
    la classe Affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public classe Affiche {
        private UserInterfaceFX aGui;
     
        public Affiche(UserInterfaceFX aGui){
             this.aGui = aGui;
        }
     
        public void bienvenue(){
             this.aGui.println("bienvenue"); // Ici j'obtiens une erreur java null pointer exception.
        }
    }
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  9. #9
    Nouveau Candidat au Club Avatar de veikoon
    Homme Profil pro
    Esiee Paris
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Esiee Paris

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Drowan Voir le message
    Et pourquoi tu n'utiliserais pas l'instance déjà existante de UserInterfaceFX ?

    Dans iniFX() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.aAffiche.Affiche(this);
    la classe Affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public classe Affiche {
        private UserInterfaceFX aGui;
     
        public Affiche(UserInterfaceFX aGui){
             this.aGui = aGui;
        }
     
        public void bienvenue(){
             this.aGui.println("bienvenue"); // Ici j'obtiens une erreur java null pointer exception.
        }
    }
    Merci mille fois mon sauveur ! Justement je n'arrivais pas a voir comment réussir a déclarer une référence vers un objet qui soit précisément celui qui crée l'interface ! Belle astuce merci beaucoup champion
    Me reste plus qu'a voir si il est possible de lancer l'application de javafx depuis ma classe "main" et j'en aurais finis

Discussions similaires

  1. Besoin d'aide pour passage d'un algo au langage JAVA
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/02/2007, 15h33
  2. Besoin d'aide pour passage de mysql a sql server
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/12/2005, 07h55
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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