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 :

JFXtras 0.5 disponible


Sujet :

JavaFX

  1. #1
    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 JFXtras 0.5 disponible
    http://steveonjava.com/2009/06/22/jf...-announcement/

    Cette nouvelle version necessite JavaFX 1.2 et inclus.... la possibilite d'integrer une scene JavaFX en tant que composant dans une GUI Swing

    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 swingingfx;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;
    import org.jfxtras.scene.SceneToJComponent;
     
    /**
     *
     * @author fabriceb
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
     
                public void run() {
                    JFrame frame = new JFrame("!!Swinging FX!!");
                    frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                    frame.setTitle("FX Panel Test");
                    frame.setLayout(new BorderLayout());
                    String sceneClass = "javafx.scene.Scene";
                    JComponent theScene = SceneToJComponent.loadScene(sceneClass);
                    theScene.setPreferredSize(new Dimension(800, 600));
                    frame.add(new JLabel("JLabel: The following is a JavaFX Scene"), BorderLayout.NORTH);
                    frame.add(theScene, BorderLayout.CENTER);
                    frame.pack();
                    frame.setVisible(true);
                }
            });
        }
    }
    Prerequis pour pouvoir compiler et faire fonctionner ce code Java :
    • Mettre le JAR de JFXtras dans le CLASSPATH.
    • Mettre tous les JAR des repertoires shared et desktop de JavaFX (hormis rt15.jar) dans le CLASSPATH.


    Bon par contre, il manque encore qq hooks pour injecter des noeuds dans cette scene soit en interprete soit en pre-compile (vu qu'on a pas de reference directe sur la scene cree). Mais ce faisant on devrait pouvoir deja integrer une class perso (contenant des noeuds) et etendant Javafx.scene.Scene dans une GUI Swing.

    En esperant que cela continue de fonctionner dans les futures releases de JavaFX.
    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

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Je dois être vraiment mauvais mais ça fait un petit moment que j'essaye d'intégrer du JFX dans du SWING et je ne comprends ni les exemples ni comment les exécuter ... Quelqu'un aurait une sorte de Bonjour Monde du JFX->Swing ?

  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
    Alors... Netbeans a ete mechant avec moi comme il l'est toujours lorsqu'on essaie de faire dependre un projet d'un autre mais au final j'ai reussi a faire marcher le trucs. Donc:

    1. J'ai un projet JavaFX qui contient la Scene/composant suivant:

      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
       
      package test2;
       
      import javafx.scene.Scene;
      import javafx.scene.control.Button;
      import javafx.util.Math;
      import javafx.scene.paint.Color;
       
      import javafx.scene.Group;
      import javafx.scene.shape.Rectangle;
       
      /**
       * @author Fabrice Bouyé (fabriceb@spc.int)
       */
       
      public class MyControl extends Scene {
          def rectLayer:Group = Group {};
       
          public override var content = bind [
              rectLayer,
              Button{
                  text: "Click FX button!";
                  action: function():Void {
                      def r:Number = Math.random();
                      def g:Number = Math.random();
                      def b:Number = Math.random();
                      def a:Number = Math.random();
                      def color:Color = Color.color(r, g, b,a);
                      def x:Number = Math.random()*width;
                      def y:Number = Math.random()*height;
                      def w:Number = Math.random()*(width - x);
                      def h:Number = Math.random()*(height - y);
                      def rect:Rectangle = Rectangle {
                          x: x, y:y;
                          width: w; height: h;
                          fill: color;
                      }
                      println("{x}, {y} {w} {h}\t{color}");
                      insert rect into rectLayer.content;
                  }
              }
          ];
      }
    2. J'ai ensuite un projet Java qui contient le code suivant :

      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 test1;
       
      import java.awt.BorderLayout;
      import java.awt.Dimension;
      import javax.swing.JComponent;
      import javax.swing.JFrame;
      import javax.swing.JLabel;
      import javax.swing.SwingUtilities;
      import org.jfxtras.scene.SceneToJComponent;
       
      /**
       *
       * @author fabriceb
       */
      public class Main {
       
          /**
           * @param args the command line arguments
           */
          public static void main(String[] args) {
              SwingUtilities.invokeLater(new Runnable() {
       
                  public void run() {
                      JFrame frame = new JFrame("!!Swinging FX!!");
                      frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                      frame.setTitle("FX Panel Test");
                      frame.setLayout(new BorderLayout());
                      String sceneClass = "test2.MyControl";
                      JComponent theScene = SceneToJComponent.loadScene(sceneClass);
                      theScene.setPreferredSize(new Dimension(800, 600));
                      frame.add(new JLabel("JLabel: The following is a JavaFX Scene"), BorderLayout.NORTH);
                      frame.add(theScene, BorderLayout.CENTER);
                      frame.pack();
                      frame.setVisible(true);
                  }
              });
          }
      }
      Au niveau des dependances de ce projet j'ai :
      • Tout le contenu des repetoires shared et desktop du SDK JavaFX.
      • Le jar de JFXtras 0.5
      • Le jar de mon precendent projet JavaFX que j'ai manuellement recopie dans le repertoire du projet (Car NetBeans veut pas associer le projet FX dans les dependances du projet Java ni encore moins pointer vers le JAR dans le repetoire dist du projet FX).


      Et.... ? Et ben ca marche ! Mon projet PUR Java peut creer le composant JavaFX, l'integrer dans une JFrame des familles et afficher lui aussi de joli rectangles de couleurs !
      C'est-y pas beau la vie ?

      Nom : Test J-JFX.png
Affichages : 93
Taille : 30,9 Ko

      Bon apres, tu me diras ben comment faire dialoguer les deux ensemble (de maniere propre) ?
      Et moi la je repondrai : j'en sais rien... pour le moment en tout cas (et ce n'est pas trop ma priorite).

      Sinon pour la maniere moins propre j'ai quelques idees au pif comme definir des classes Java partagees dans un 3eme projet qui seront utilisees par les deux bouts pour parler via un espece de tunnel. Mais ce ne sont que quelques idees folles de-ci de-la y doit y avoir plus simple...
    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
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Alors j'ai plusieurs problèmes en essayant ton exemple (mais je pense que je m'y prend mal) ...

    Je n'arrive pas à lancer MyControl qui me balance l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.NoSuchMethodException: test2.MyControl.javafx$run$(com.sun.javafx.runtime.sequence.Sequence)
    	at java.lang.Class.getMethod(Class.java:1605)
    	at com.sun.javafx.runtime.Entry.start(Entry.java:63)
    	at com.sun.javafx.runtime.Main.main(Main.java:80)
    	at com.sun.javafx.runtime.main.Main.main(Main.java:35)
    à moins que je n'enlève le modificateur public de MyControl.

    Supposant que peut-être MyControl n'était pas fait pour être lancé en stand-alone j'ai quand même créé un jar à partir de mon projet JFX test2 qui me donne un test2.jar.
    J'importe ce test2.jar dans le classpath de mon projet test1.
    J'importe test2.Mycontrol dans test1.java

    je lance le tout et il me dit qu'il ne trouve pas la classe ... Je suis ennuyé ...

  5. #5
    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
    Strange tout plein.... dans mon projet FX j'avais effectivement un autre fichier qui me sert de script de lancement pour vérifier que mon composant fonctionne bien en FX. Comme ce script n'est absolument pas lancé, ni utilisé ni référencé coté Java je ne l'ai pas inclus ici (m'est avis que c'est NetBeans qui te joue des tours lors de la compilation du JAR. Besoin de passer le profil de compilation d'application JFX à lib JFX ?).

    Sinon : JavaFx1.2, Java 1.6.0_14, NetBeans 6.7.1 et JFXtras 0.5

    Ps : comme j'ai indiqué dans NetBeans j'ai essayé deux choses :
    • inclure le projet FX dans les dépendances du projet Java.
    • inclure le JAR qui se trouvait dans le répertoire dist du projet FX dans les dépendances du projet Java.


    mais à chaque fois NetBeans déraillait : tout petite icone de sens interdit dans la barre en bas m'indiquant qu'il pouvait pas mettre à jour le fichier build.xml, ClassNotFound à l'éxécution et si je retournais dans les dépendance ben il avait supprimé ce que j'y avais mi. Donc c'est pour ca que j'ai manuellement recopié le JAR ailleurs et après je l'ai intégré dans les dépendances.

    Ensuite si le JAR est bien dans les dépendances et que la classe est bien dedans (on peut avoir le contenu d'un JAR avec n'importe quel outil de zipping) et que le programme ne le trouve pas c'est alors probablement que la classe n'est pas public (normal).
    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

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Bah oui mais mêttre la classe en public, ça me faisait des erreurs ... Je suis ennuyé

  7. #7
    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
    Le seul moment où ca peut poser problème à la compilation c'est si le nom du fichier (nom court ou nom long, cad avec le répertoire de stockage) ne correspond ni au nom de la classe si à son package.

    Si on ne pouvait rien déclarer de public, ca empêcherait de programmer n'importe quelle API ou composant réutilisable perso .
    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

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Je suis assez d'accord et c'est ce qui me chiffonne, c'est que j'ai beau farfouiller j'ai plus l'impression de m'empêtrer que de m'en sortir ...

    Bah à cœur vaillant rien d'impossible donc Force et courages seront mes outils !

  9. #9
    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
    Bon je ne vois pas trop d'ou vient le probleme. J'ai retire mon script executable de mon projet FX.

    Certes il m'oblige a choisit mon composant comme classe executable meme si ce dernier n'a pas de fonction run() et s'en pleint apres si je clique sur le bouton Run (java.lang.NoSuchMethodException: test2.MyControl.javafx$run$(com.sun.javafx.runtime.sequence.Sequence)) car c'est sur qu'il ne peut plus executer le code mais ca ne m'empeche pas de compiler ni encore moins de packager en cliquant avec le bouton de droite sur le projet et en choisissant Clean and Build Project. Et mon composant est toujours public.
    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

  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 Binaires javaFX
    Pour utiliser les binaires d'un projet javafx sous netbean la seule méthode qui fonctionne est de créer un librairie contenant ces binaires. c'est plus fastidieux que d'importer un projet mais ca marche!

  11. #11
    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
    Vraiment étrange car si Netbeans me pose parfois bien des soucis je n'ai pas ce lui là.

    Et en utilisant manuellement javafxpackager ?
    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. Récupérer la quantité de ressource disponible (RAM,CPU,HDD)
    Par telecnop dans le forum Programmation et administration système
    Réponses: 11
    Dernier message: 26/10/2005, 13h23
  2. [VBA]Obtenir les noms des polices disponibles
    Par xp dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/03/2004, 15h39
  3. Réponses: 3
    Dernier message: 23/01/2004, 21h02
  4. [API Windows] Polices de caractères disponibles
    Par bebeours dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 08h28
  5. Ports disponibles pour une connection
    Par Walm dans le forum Développement
    Réponses: 7
    Dernier message: 06/10/2003, 22h10

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