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 :

Comment créer une boîte de dialogue JavaFX ?


Sujet :

JavaFX

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut Comment créer une boîte de dialogue JavaFX ?
    salut,

    je voudrais savoir comment créer une boîte de dialogue javafx à partir d'un code java; le cas échéant où trouver cette info.

    merci,

    olivier

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Points : 409
    Points
    409
    Par défaut
    Regardes du côté de JFXtras, c'est un bon complément à l'API est est un peu jeune
    Tu devrais y trouver ton bonheur

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 852
    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 852
    Points : 22 869
    Points
    22 869
    Billets dans le blog
    51
    Par défaut
    A noter que :
    - JFXtras 0.6 est compatible JavaFX 1.2
    - JFXtras 0.7 beta et beta 2 sont compatibles JavaFX 1.3. Les XDialog ne sont pas modaux (bloquant) dans cette beta version mais devraient a nouveau l'etre dans la version finale (un probleme similaire existait durant la beta de la 0.6).

    Un XDialog ca marche comme une scene a ceci pres qu'il a un Stage parent et qu'il peut etre modal.
    Quand il est bloquant (voir plus haut concernant la 0.7), et qu'on a ce genre d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    XDialog {
       modal: true
    }
    // Autre chose.
    l'appel a // Autre chose n'a lieu que lorsque le dialogue est referme.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    salut,

    en fait j'ai copié le code qui lance la fenêtre principale, et j'ai ainsi lancé un deuxième "desktop design file", comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function buttonAction(): Void {
     
            var design = newdesktop {};
     
            javafx.stage.Stage {
                title: "newdesktop"
                scene: design.getDesignScene()
            }
     
        }
    j'éspère que j'ai réussi à me faire comprendre.
    mais je suis face à un autre problème : comment passer une variable à partir de la fenêtre principale vers la fenêtre secondaire, et aussi dans l'autre sens?

    merci pour toute réponse,

    olivier

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Points : 409
    Points
    409
    Par défaut
    En gardant un référence sur celle ci , un peu comme avec n'importe quel objet.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    salut,

    pourrais-tu donner un exemple de code, avec 2 fenêtres et une variable dont la 2e fenêtre change la valeur, valeur qui est lue lors du retour dans la 1e fenêtre, stp?

    olivier

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 852
    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 852
    Points : 22 869
    Points
    22 869
    Billets dans le blog
    51
    Par défaut
    Pour faire simple :

    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
     
    function buttonAction(): Void {
     
            var design = newdesktop {};
            design.textField.text = myVar
     
            javafx.stage.Stage {
                title: "newdesktop"
                scene: design.getDesignScene()
                onClose: function():Void {
                  myVar = design.textField.text;
                }
            }
     
        }
    Après tu peux aussi rajouter des variables dans ton design en les codant manuellement (puisque le composer ne prend en charge que la partie GUI).

    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
     
    public newdesktop  {
      [...]
      public-init var myVarInDesign:String on replace {
         textField.text = myVarInDesign;
      }
     
      /**
       * Bindé en tant qu'action du bouton OK.
       */
      public var onOK:function():Void;
    }
     
    [...]
     
    function buttonAction(): Void {
     
            var design = newdesktop {
               myVarInDesign: myVar
               onOK: function():Void {
                  myOkButton.scene.stage.close();
                  myVar = textField.text 
               }
            };
            javafx.stage.Stage {
                title: "newdesktop"
                scene: design.getDesignScene()
            }
        }

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    merci, il faut maintenant que je fasse quelques tests.

    olivier

  9. #9
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    j'ai un peu reporté les tests, car je m'occupe actuellement d'intégrer javafx dans java:

    à tout hasard, savez-vous si il est possible d'appeler une "fenêtre" javafx à partir d'une classe java traditionnelle (en l'occurence, à partir d'un client JEE)?

    si oui, pouvez-vous me donner un exemple?

    olivier

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Points : 409
    Points
    409
    Par défaut
    Oui avec des interfaces pas de soucis, par contre il faut ajouter les librairies javafx au classpath de JEE. J'avais esseayé avec osgi donc ca doit marcher sur les conteneurs JEE basé dessus tel que GFV3 et ceux de Spring.

  11. #11
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    merci, je vais essayer de suite.
    je te tiens au courant de mes succès ou échecs!

    olivier

  12. #12
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    du nouveau : j'ai réussi à importer les librairies de javafx, et j'ai créé un nouveau "stage" dans mon projet client.

    mais comment l'appeler à partir du code java?
    je cherche de mon côté.

    voici le code javafx:

    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
     
     
    Stage {
        title: "Application title"
        scene: Scene {
            width: 250
            height: 80
            content: [
                Text {
                    font : Font {
                        size : 16
                    }
                    x: 10
                    y: 30
                    content: "Application content"
                }
            ]
        }
    }
    olivier

  13. #13
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    ... et voici le code java:

    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
     
    package enterpriseapplication4;
     
    /**
     *
     * @author oliviersaint-eve
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            System.err.println("hello");
     
     
     
     
     
        }
    }
    j'ai remanié le code javafx:

    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
     
    package enterpriseapplication4;
     
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.text.Text;
    import javafx.scene.text.Font;
     
    /**
     * @author oliviersaint-eve
     */
    public class Main2 {
     
     
        def stage: Stage = Stage {
                    title: "Application title"
                    scene: Scene {
                        width: 250
                        height: 80
                        content: [
                            Text {
                                font: Font {
                                    size: 16
                                }
     
                                x: 10
                                y: 30
                                content: "Application content"
                            }
                        ]
                    }
                }
     
           public function show(){
               stage.visible=true;
           }
     
     
    }
    ça serait sympa de m'aider!

  14. #14
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    voici qui fait avancer le schmilblick : http://java.dzone.com/news/calling-javafx-from-java.

    avec ce code :
    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
     
    package test_java_javafx;
     
    import java.io.InputStreamReader;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    import javax.swing.SwingUtilities;
     
    /**
     *
     * @author oliviersaint-eve
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            System.err.println("hello");
     
     
            try {
                ScriptEngineManager manager = new ScriptEngineManager();
                ScriptEngine engine = manager.getEngineByExtension("fx");
                InputStreamReader reader = new InputStreamReader(Main.class.getResourceAsStream("NewJavaFXStage.fx"));
                engine.eval(reader);
            } catch (ScriptException ex) {
            }
    //ScriptEngineManager manager = new ScriptEngineManager();
    //            final ScriptEngine engine = manager.getEngineByExtension("fx");
    //            final InputStreamReader reader = new InputStreamReader(Main.class.getResourceAsStream("NewJavaFXStage.fx"));
        }
        }
    }
    j'obtiens cette erreur:

    Exception in thread "main" java.lang.NoSuchMethodError: com.sun.javafx.runtime.Entry.entryMethodName()Ljava/lang/String;
    at com.sun.tools.javafx.comp.JavafxDefs.<clinit>(JavafxDefs.java:169)
    at com.sun.tools.javafx.script.JavaFXScriptCompiler.initCompilerContext(JavaFXScriptCompiler.java:103)
    at com.sun.tools.javafx.script.JavaFXScriptCompiler.compile(JavaFXScriptCompiler.java:166)
    at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.parse(JavaFXScriptEngineImpl.java:255)
    at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:178)
    at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:169)
    at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:174)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)
    at test_java_javafx.Main.main(Main.java:31)
    Java Result: 1
    avec ce fichier javafx:

    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
     
    package enterpriseapplication4;
     
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.text.Text;
    import javafx.scene.text.Font;
     
    /**
     * @author oliviersaint-eve
     */
    Stage {
        title: "Application title"
        scene: Scene {
            width: 250
            height: 80
            content: [
                Text {
                    font: Font {
                        size: 16
                    }
     
                    x: 10
                    y: 30
                    content: "Application content"
                }
            ]
        }
    }

  15. #15
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    on dirait que il manque une librairie javafx, pourtant j'ai inclus tous les jars du répertoire lib du SDK javafx.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    Voir Creating JavaFX Classes from Java Classes then running? et
    Loading JavaFX code from string

    Je viens de ré-essayer avec JavaFX 1.3, en lançant des scripts avec la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Xbootclasspath/p:%JAVAFX_HOME%/lib/shared/javafxc.jar -Djava.ext.dirs=%JAVAFX_HOME%/lib/shared;%JAVAFX_HOME%/lib/desktop -cp %JAVAFX_HOME%/lib/shared/javafxc.jar;. RunJavaFXScript Test2.fx
    (j'ai JAVAFX_HOME défini dans mes variables d'environnement), j'ai un petit programme de test qui fonctionne (dessiner avec la souris) mais pas un autre (une animation simple) : le runtime ne trouve pas com.sun.javafx.animation.AnimationProviderImpl et moi non plus (ni avec jarbrowser ni avec Depends pour les DLL).

Discussions similaires

  1. Comment créer une boîte à idée
    Par chatroux dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/09/2008, 15h10
  2. Comment créer une boite de dialogue d'options comme Delphi?
    Par Patrick25300 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/01/2008, 17h56
  3. Réponses: 4
    Dernier message: 26/01/2006, 16h13
  4. Créer une boîte de dialogue "Parcourir"
    Par magic8392 dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2005, 10h41

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