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 :

JavaFX 2.0 beta disponible


Sujet :

JavaFX

  1. #21
    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
    Faut le temps que ca se fasse aussi

    J'ai note divers trucs un space note au cour de ces deux derniers jours passe a porter le script de démarrage de mon applis. Sachant que ce script se chargeait de tests et vérifications AVANT de lancer l'app principale (que je n'ai pas encore commence a porter) : durant le lancement des tests simples etaient initialement faits (version Java, JavaFX), puis un XDialog (voir JFXtras) affichait un logo de chargement, tandis que d'autres tests plus avances avaient lieu (RAM, espace disque, intégrité de l'install disque) et enfin la fenêtre de l'application principale se lançait. Pour finir le logo de chargement s’effaçait. J'avais donc besoin d'avoir une fenêtre flottante/dialogue AVANT le chargement de la fenêtre principale.

    • La gestion des threads est désormais importante, ainsi :
      • Il n'est plus question de lancer directement un stage depuis la thread courante non-EDT
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
        static void test1() {
                Stage stage = new Stage();
                stage.setVisible(true);
            }
        donne :
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Exception in thread "main" java.lang.IllegalStateException: Not on FX application thread; currentThread = main
        Normal c'est ce qu'on en attend.
      • Cependant ceci ne fonctionne pas non plus:
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        static void test2() {
                Platform.runLater(new Runnable() {
         
                    /**
                     * {@inheritDoc}
                     */
                    @Override
                    public void run() {
                        Stage stage = new Stage();
                        stage.setVisible(true);
                    }
                });
            }
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
        En effet il manque l'appel a l'initialisation des runtimes... appel que je n'ai pas trouve dans l'API,
        En fait cet appel est fait par la classe Application. (Ah mais son code n'est pas publique donc on ne sait pas ce qu'elle appelle...)
      • Ah ben oui c'est con-con mais il faut initialiser une Application AVANT de pouvoir afficher du JavaFX... ce qui explique en partie cette bizarrerie a la ligne 23 du didacticiel d’intégration de JavaFX 2.0 dans Swing (et le fait que leur classe étende Application).
        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
        public class Main extends Application {
           private static JFXPanel javafxPanel;
         
           public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                        initAndShowGUI();
                }
            });
           }
         
           public static void initAndShowGUI() {
               JFrame frame = new JFrame("Swing application");
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
               // Create JavaFX panel.
               javafxPanel = new JFXPanel();
               javafxPanel.setPreferredSize(new Dimension(550,400));
               frame.getContentPane().add(javafxPanel, BorderLayout.CENTER);
         
               // Create JavaFX scene.
               Application.launch (Main.class, null);
         
               // Show frame.
               frame.pack();
               frame.setVisible(true);
           }
         
           @Override
           public void start (Stage mainStage) {
               //Create the scene and the stage
         
               Group root = new Group();
               Scene scene = new Scene(root);
         
               root.getChildren().add(createJavaFXContent());
               // Add scene to panel
               javafxPanel.setScene(scene);
           }
        }
        Ce qui fait qu'on se retrouve toujours avec un Stage qui ne sert a rien même si on ne l'affiche pas. C'est un peu bête je vais devoir faire que mon script de démarrage etende Application alors que je souhaitais plutôt découpler les choses...
    • Tien pendant qu'on en est a la classe Application, la méthode Application.launch(Class<? extends Application>, String[] args) prend en paramètres les arguments de la ligne de commande mais ces derniers ne sont jamais passe au constructeur de la classe (j'ai essaye divers variantes avec ou sans paramètre, seul le constructeur sans est instancie) et il n'est pas possible non-plus de les récupérer via l'API d'Application.
      Pour le moment je passe par un membre statique, c'est un peu sale.
    • Niveau boite de dialogues c'est pas encore ça :
      • Alert a disparu, il va falloir revoir toute la messagerie plus profond dans l'appli.
      • Je n'arrive pas a utiliser PopupWindow ou Popup. Dans le meilleur des cas rien ne se passe/s'affiche, tandis que si je rend le mainStage (voir ci-dessus) visible et que j'y attache le popup, j'ai une exception... bref je sens qu'il va me falloir attendre le retour de XDialog...
      • Contrairement a ce qui était annoncé dans leur lettre d'intention initiale, point de boites de dialogues courantes (messages, filechooser, colorchooser, etc.) standards a l'horizon.



    Autre:
    • Mon ordi du boulot a un sacre problème car des fois les pilotes graphiques plantent ou alors NetBeans ou JavaFX sont super ultra-lents.
    • Le pattern builder c'est bien sauf quand NetBeans vient foutre le bordel lors d'un formatage ce qui fait qu'on se retrouve avec une ligne d'initialisation de 3Km de long au lieu des appels bien agences les uns sous les autres.
      Ainsi :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
                  final Stage splashScreen = new StageBuilder()
                              .title(MessageFormat.format(i18n.getString("SPLASH_SCREEN_TITLE"), PROG_NAME))
                              .width(image.getWidth() + 2 * margin)
                              .height(image.getHeight() + 2 * margin)
                              .style(StageStyle.TRANSPARENT)
                              .build();
      devient grace a la "magie" de NetBeans :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  final Stage splashScreen = new StageBuilder().title(MessageFormat.format(i18n.getString("SPLASH_SCREEN_TITLE"), PROG_NAME)).width(image.getWidth() + 2 * 7).height(image.getHeight() + 2 * 7).style(StageStyle.TRANSPARENT).build();
      Bref, c'est pas la joie (et encore j'ai choisi un exemple court). Bref il va falloir rendre un peu moins strictes les regles de formattage de NetBeans.
    • Le pattern builder + netbeans + la nouvelle gestion des evenements ca rend le codage des animations assez moches...
      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
                      SequentialTransition launchAnimation = new SequentialTransitionBuilder().children(
                              // Make the splashscreen appear & start the app.
                              new FadeTransitionBuilder().duration(Duration.valueOf(2000)).node(splashView).toValue(1).onFinished(new EventHandler<ActionEvent>() {
       
                          /**
                           * {@inheritDoc}
                           */
                          @Override
                          public void handle(ActionEvent event) {
                              startXXX(argsMap);
                          }
                      }).build(),
                              // Wait for 5s.
                              new PauseTransitionBuilder().duration(Duration.valueOf(5000)).build(),
                              // Make the splashscreen disapear and close it.                        
                              new FadeTransitionBuilder().duration(Duration.valueOf(2000)).node(splashView).toValue(0).onFinished(new EventHandler<ActionEvent>() {
       
                          /**
                           * {@inheritDoc}
                           */
                          @Override
                          public void handle(ActionEvent event) {
                              splashScreen.close();
                          }
                      }).build()).build();
      La aussi j'ai mis un exemple court...
    • Ca manque toujours autant de convertisseur AWT/Java2D <-> JavaFX pour les types de base (font, color).
    • La gestion du stoke reste basique comme pour 1.x (assez limite par rapport a Java 2D) mais il y ont intégré le positionnement relatif du stroke demande par Jim Weaver.


    Ceci dit, c'est une version bêta et on est loin de la sortie donc je suis encore totalement confiant

    Prochaines étapes pour dans les semaines a venir:
    • Créer un nœud/contrôle custom avec support CSS.
    • Intégrer du Swing dans JavaFX... j'ai divers idees la-dessus : pour certains types de composants (ceux dont justement j'ai besoin), je pense qu'il doit être possible de le rendre dans une BufferedImage empaquetée* dans une Image FX (quitte a mettre un timer pour faire des rafraichissements) et de forwarder des faux événements souris/clavier au composant Swing. Évidement ça ne marchera pas pour tous les composants (par exemples les composants a popup style JComboBox) mais pour le composant GIS dont j'ai besoin ça peut éventuellement fonctionner...
    • Creer une ListView, TreeView et TableView éditables
    • Voir si qqun a trouve le moyen de rendre une scène ou un nœud dans une bitmap... comme prévu la question a été rapidement soulevée rapidement sur les forums d'Oracle... sans possibilité d'impression ou d'export vers du PDF ça reste d'usage limité en entreprise.


    *Encore faut-t-il trouver comment faire.
    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. #22
    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
    Autre chose : la doc n'est pas tant a jour que cela ; certaines pages, notamment SplitPane, donnent des exemples d'utilisation faux (l'exemple donné est pour une version antérieure qui ne supportait qu'un contrôle a droite et a gauche, tandis que la version actuelle supporte de multiples contrôles et diviseurs).

    De même il est intéressant de voir que la doc indique que certains contrôles et fonctionnalités avaient été rajoutes des JavaFX 1.3.1 et il est même fait mention de JavaFX 1.3.2.
    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. #23
    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

    Faut le temps que ca se fasse aussi

    J'ai note divers trucs un space note au cour de ces deux derniers jours passe a porter le script de démarrage de mon applis. Sachant que ce script se chargeait de tests et vérifications AVANT de lancer l'app principale (que je n'ai pas encore commence a porter) : durant le lancement des tests simples etaient initialement faits (version Java, JavaFX), puis un XDialog (voir JFXtras) affichait un logo de chargement, tandis que d'autres tests plus avances avaient lieu (RAM, espace disque, intégrité de l'install disque) et enfin la fenêtre de l'application principale se lançait. Pour finir le logo de chargement s’effaçait. J'avais donc besoin d'avoir une fenêtre flottante/dialogue AVANT le chargement de la fenêtre principale.

    La gestion des threads est désormais importante, ainsi :
    Il n'est plus question de lancer directement un stage depuis la thread courante non-EDT
    Code :
    static void test1() {
    Stage stage = new Stage();
    stage.setVisible(true);
    }

    donne :
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Exception in thread "main" java.lang.IllegalStateException: Not on FX application thread; currentThread = main

    Normal c'est ce qu'on en attend.
    Cependant ceci ne fonctionne pas non plus:
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
    static void test2() {
    Platform.runLater(new Runnable() {

    /**
    * {@inheritDoc}
    */
    @Override
    public void run() {
    Stage stage = new Stage();
    stage.setVisible(true);
    }
    });
    }

    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized

    En effet il manque l'appel a l'initialisation des runtimes... appel que je n'ai pas trouve dans l'API,
    En fait cet appel est fait par la classe Application. (Ah mais son code n'est pas publique donc on ne sait pas ce qu'elle appelle...)
    Ah ben oui c'est con-con mais il faut initialiser une Application AVANT de pouvoir afficher du JavaFX... ce qui explique en partie cette bizarrerie a la ligne 23 du didacticiel d’intégration de JavaFX 2.0 dans Swing (et le fait que leur classe étende Application).
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
    public class Main extends Application {
    private static JFXPanel javafxPanel;

    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    initAndShowGUI();
    }
    });
    }

    public static void initAndShowGUI() {
    JFrame frame = new JFrame("Swing application");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Create JavaFX panel.
    javafxPanel = new JFXPanel();
    javafxPanel.setPreferredSize(new Dimension(550,400));
    frame.getContentPane().add(javafxPanel, BorderLayout.CENTER);

    // Create JavaFX scene.
    Application.launch (Main.class, null);

    // Show frame.
    frame.pack();
    frame.setVisible(true);
    }

    @Override
    public void start (Stage mainStage) {
    //Create the scene and the stage

    Group root = new Group();
    Scene scene = new Scene(root);

    root.getChildren().add(createJavaFXContent());
    // Add scene to panel
    javafxPanel.setScene(scene);
    }
    }

    Ce qui fait qu'on se retrouve toujours avec un Stage qui ne sert a rien même si on ne l'affiche pas. C'est un peu bête je vais devoir faire que mon script de démarrage etende Application alors que je souhaitais plutôt découpler les choses...
    Tien pendant qu'on en est a la classe Application, la méthode Application.launch(Class<? extends Application>, String[] args) prend en paramètres les arguments de la ligne de commande mais ces derniers ne sont jamais passe au constructeur de la classe (j'ai essaye divers variantes avec ou sans paramètre, seul le constructeur sans est instancie) et il n'est pas possible non-plus de les récupérer via l'API d'Application.
    Pour le moment je passe par un membre statique, c'est un peu sale.
    Niveau boite de dialogues c'est pas encore ça :
    Alert a disparu, il va falloir revoir toute la messagerie plus profond dans l'appli.
    Je n'arrive pas a utiliser PopupWindow ou Popup. Dans le meilleur des cas rien ne se passe/s'affiche, tandis que si je rend le mainStage (voir ci-dessus) visible et que j'y attache le popup, j'ai une exception... bref je sens qu'il va me falloir attendre le retour de XDialog...
    Contrairement a ce qui était annoncé dans leur lettre d'intention initiale, point de boites de dialogues courantes (messages, filechooser, colorchooser, etc.) standards a l'horizon.



    Autre:

    Mon ordi du boulot a un sacre problème car des fois les pilotes graphiques plantent ou alors NetBeans ou JavaFX sont super ultra-lents.
    Le pattern builder c'est bien sauf quand NetBeans vient foutre le bordel lors d'un formatage ce qui fait qu'on se retrouve avec une ligne d'initialisation de 3Km de long au lieu des appels bien agences les uns sous les autres.
    Ainsi :

    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
    final Stage splashScreen = new StageBuilder()
    .title(MessageFormat.format(i18n.getString("SPLASH_SCREEN_TITLE"), PROG_NAME))
    .width(image.getWidth() + 2 * margin)
    .height(image.getHeight() + 2 * margin)
    .style(StageStyle.TRANSPARENT)
    .build();

    devient grace a la "magie" de NetBeans :

    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    final Stage splashScreen = new StageBuilder().title(MessageFormat.format(i18n.getString("SPLASH_SCREEN_TITLE"), PROG_NAME)).width(image.getWidth() + 2 * 7).height(image.getHeight() + 2 * 7).style(StageStyle.TRANSPARENT).build();

    Bref, c'est pas la joie (et encore j'ai choisi un exemple court). Bref il va falloir rendre un peu moins strictes les regles de formattage de NetBeans.
    Le pattern builder + netbeans + la nouvelle gestion des evenements ca rend le codage des animations assez moches...
    Code :
    SequentialTransition launchAnimation = new SequentialTransitionBuilder().children(
    // Make the splashscreen appear & start the app.
    new FadeTransitionBuilder().duration(Duration.valueOf(2000)).node(splashView).toValue(1).onFinished(new EventHandler<ActionEvent>() {

    /**
    * {@inheritDoc}
    */
    @Override
    public void handle(ActionEvent event) {
    startXXX(argsMap);
    }
    }).build(),
    // Wait for 5s.
    new PauseTransitionBuilder().duration(Duration.valueOf(5000)).build(),
    // Make the splashscreen disapear and close it.
    new FadeTransitionBuilder().duration(Duration.valueOf(2000)).node(splashView).toValue(0).onFinished(new EventHandler<ActionEvent>() {

    /**
    * {@inheritDoc}
    */
    @Override
    public void handle(ActionEvent event) {
    splashScreen.close();
    }
    }).build()).build();

    La aussi j'ai mis un exemple court...
    Ca manque toujours autant de convertisseur AWT/Java2D <-> JavaFX pour les types de base (font, color).
    La gestion du stoke reste basique comme pour 1.x (assez limite par rapport a Java 2D) mais il y ont intégré le positionnement relatif du stroke demande par Jim Weaver.


    Ceci dit, c'est une version bêta et on est loin de la sortie donc je suis encore totalement confiant

    Prochaines étapes pour dans les semaines a venir:

    Créer un nœud/contrôle custom avec support CSS.
    Intégrer du Swing dans JavaFX... j'ai divers idees la-dessus : pour certains types de composants (ceux dont justement j'ai besoin), je pense qu'il doit être possible de le rendre dans une BufferedImage empaquetée* dans une Image FX (quitte a mettre un timer pour faire des rafraichissements) et de forwarder des faux événements souris/clavier au composant Swing. Évidement ça ne marchera pas pour tous les composants (par exemples les composants a popup style JComboBox) mais pour le composant GIS dont j'ai besoin ça peut éventuellement fonctionner...
    Ah bah moi aussi ça m’intéresse, tu utilises quoi comme GIS, pour moi c'est geotoolkit

    Pour le CSS j'ai mis à jour mon post précédent, il faut le path relatif au classpath comme pour Class.getRessourceAsStream() pour le fichier CSS, file://path ne fonctionne pas... pas encore

    Pour le HTML les balises video et canvas ne fonctionne pas ... pas encore.

  4. #24
    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
    Oui d'ailleurs Image accepte les URLs... sous forme de String, mais pas comme dans la 1.x, ce qui m'a fait me poser quelques question existentielles au début et finalement j'ai fait un truc du genre (je cite de mémoire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Image(getClass().getClassLoader().getResource(__DIR__+"resources/image.png").toString(), false);
    He oui, je me suis codé une classe __DIR__ pour palier à l'absence d'un viel ami...
    Marre de taper les chemin d'accès en dur et que ça se refactore mal.

    Un truc du genre (là aussi je met le code de mémoire, à corriger) :

    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
    public class __DIR__ {
      private String value;  
     
      public __DIR__(Class aClass) {
         value = aClass.getPackage().getName().replaceAll("\\.", "/") + "/";
      }
     
      /**
       * {@inheritDoc}
       */
      @Override
      public String toString() {
        return value;
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MaClass {
      private static final __DIR__ __DIR__ = new __DIR__(MaClass.class);
    }
    En SIG, j'utilise OpenMap mais, bon au final si ça se trouve mon idée ne fonctionnera pas. J’essaierai de voir d'ici une semaine ou deux si je peux trouver le temps de coder un test.
    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. #25
    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
    Pour l'image à priori il faut utiliser le constructeur avec un InputStream.
    Je ne pense pas que cette fonction gère le format Raw donc il faudrait déjà convertir une BufferedImage en BitMap via ImageIO dans un outputStream puis le copier dans un ArrayInputStream.
    Un peu lourd quand même surtout pour un rafraichissement d'image intense, de même que mon petit doigt me dit qu'on va se taper une fuite de mémoire.

    Sinon j'ai essayé un truc comme ça mais ça marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    com.sun.prism.Image prismImage = 
                            ((com.sun.prism.Image) image.getPlatformImage()).createPackedCopy();
                    ByteBuffer buffer = (ByteBuffer) prismImage.getPixelBuffer();
                    int size = prismImage.getHeight()*prismImage.getWidth()*prismImage.getBytesPerPixelUnit();
                    byte[] blank = new byte[size];
                    buffer.rewind();
                    buffer.put(blank, 0, size);
                    iv.imageProperty().set(Image.impl_fromPlatformImage(prismImage));
    Avec createPackedCopy j'ai une erreur interne de PRISM et sans l'image ne change pas.

    Edit:
    Ca aussi ça marche pô
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Image getImage() throws IOException {
            BufferedImage bi = ImageIO.read(new File("c:/EDF.png"));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(bi, "bmp", baos);
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            Image res = new Image(bais);
            return res;
        }

  6. #26
    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
    En fait, pas besoin de faire ca, la methode non-documentée Image.impl_fromExternalImage(Object) semble marcher directement (du moins pour le moment et si ca ne change pas dans la future version) :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    package test;
     
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.InputStream;
    import java.net.URL;
    import java.net.URLConnection;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.layout.TilePane;
    import javafx.scene.paint.Color;
    import javafx.stage.Stage;
    import javax.imageio.ImageIO;
     
    /**
     *
     * @author fabriceb
     */
    public class Main extends Application {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            //System.setProperty("java.net.useSystemProxies", "true");
            System.setProperty("http.proxyHost", ...);
            System.setProperty("http.proxyPort", ...);
            Application.launch(Main.class, args);
        }
     
        @Override
        public void start(Stage primaryStage) throws Exception {
            primaryStage.setTitle("Image test");
            TilePane root = new TilePane();
            Scene scene = new Scene(root, 950, 650, Color.TRANSPARENT);
            // Loading resource from package/JAR.
            ImageView image1 = new ImageView(new Image(Main.class.getClassLoader().getResource("test/Commando.png").toString()));
            // Loading resource from File
            ImageView image2 = new ImageView(new Image("2010_01_Sonic.png"));
            // Loading resource from Java Image
            BufferedImage javaImage = ImageIO.read(new File("Sonic Channel.png"));
            ImageView image3 = new ImageView(Image.impl_fromExternalImage(javaImage));
            // Loading resource from URL.
            ImageView image4 = new ImageView(new Image("http://www.oracleimg.com/us/assets/oralogo-small.gif"));
            // Loading resource from URL stream.
            ImageView image5 = null;
            try (InputStream in = new URL("http://www.developpez.net/template/images/logo.gif").openStream()) {
                image5 = new ImageView(new Image(in));
            }
            // Loading resource from URL connection.
            ImageView image6 = null;
            URL url = new URL("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png");
            URLConnection connection = url.openConnection();
            System.out.println("Data size: " + connection.getContentLength());
            try (InputStream in = connection.getInputStream()) {
                image6 = new ImageView(new Image(in));
            }
            //
            root.getChildren().addAll(image1, image2, image3, image4, image5, image6);
            primaryStage.setScene(scene);
            primaryStage.setVisible(true);
        }
    }
    Nom : imagetest.jpg
Affichages : 225
Taille : 137,8 Ko
    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

  7. #27
    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
    Concernant Maven : JavaFX Compilation with Maven
    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. #28
    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
    Voilà après quelques test:

    La mise à jour d'une Image par Image.impl_fromExternalImage(bufferedImage) fonctionne parfaitement, je l'ai testé avec une caméra 60fps (copie d'écran), la consommation CPU reste faible et pas de soucis de conso mémoire.

    Pour maven il faut créer une librairie avec le jar jfxrt, mais le runtime javaFX cherche les librairies native dans le chemin relatif ../bin, donc il faut les copier à la main dans son dépôt maven et ça roule.

    A part ça j'ai un petit soucis avec TextArea et sa propriété rowCount qui me génère une exception quand j'assigne une valeur, une suggestion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in Application start method
    java.lang.StackOverflowError
    	at com.javafx.preview.control.TextArea$2.set(TextArea.java:286)
    	at javafx.beans.property.IntegerPropertyBase.setValue(IntegerPropertyBase.java:117)
    	at com.javafx.preview.control.TextArea$2.set(TextArea.java:290)
    	at javafx.beans.property.IntegerPropertyBase.setValue(IntegerPropertyBase.java:117)
    	at com.javafx.preview.control.TextArea$2.set(TextArea.java:290)
    Images attachées Images attachées  

  9. #29
    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
    Nop, juste vu les retours disant que ce composant preview était assez bugge.

    J'ai décidé de profiter du long w-e et de ne pas programmer sauf mercredi soir ou j'ai fait divers tests. Concernant le rendu de composant Swing c'est parfaitement possible a deux problèmes près :

    • les composants ne se dessinent pas car ils n'ont pas de taille tant qu'ils ne sont pas apparus une première fois a l’écran.
      J'ai essaye de bidouiller les classes GraphicsEnvirronment, GraphicsConfiguration et GraphicsDevice pour qu'ils génèrent un pseudo écran qui serait en fait une surface bitmap en mémoire (ce qui est potentiellement supporte par GraphicsDevice.TYPE_IMAGE_BUFFER, mais ça fini par une ClassCastException qq part profondément dans l'API quand la JVM caste le device en sa classe concrète Win32 (ah ben vi a ce niveau ce n'est plus guère portable).
      Après reste la solution de mettre une JWindow qq part en dehors de la zone d'affichage pour mettre les composants Swing dedans mais bon...
    • Depuis tout le temps que je manipule des API graphique de haut niveau j'ai totalement oublie comment lancer des event AWT de bas niveau (souris/clavier) manuellement dans l'event queue (quoi que pour le clavier il est apparemment possible de passer par KeyboardFocusManager. Cependant, il n'y a rien d’équivalent pour la souris).
      J'aimerai éviter de passer par un Robot si possible (cause ça serait moins transparent pour l'utilisateur a cause des déplacements du curseur).


    Sinon tant que la méthode d'Image fonctionne, avoir un rafraichissement lorsque le composant reçoit des ComponentEvent et autre trucs basique fonctionne très bien. Il est aussi possible de faire un rafraichissement automatique avec un Timeline (contrairement a JavaFX 1.x, ici PauseTransition n’exécute pas son action a chaque boucle, j'ai donc du revenir sur sa classe mère avec une action sur le KeyFrame). Évidement au final la classe est un gros meli-melo de SwingUtilities.invokeLater(), SwingUtilities.invokeAndWait() et de Platform.runLater().

    Ah oui et sinon il nous espionne encore
    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. #30
    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
    D'ailleurs en y songeant la sur le coup....

    En passant par un JFXPanel, on doit pouvoir alors exporter une scène dans un bitmap via Java2D ... Hum va falloir y réfléchir sérieusement
    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

  11. #31
    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
    Je viens de poster ca dans le Jira (ouai je me suis souvenu de mon identifiant) :

    Citation Envoyé par Transition behavior regression
    In 2.0, the only equivalent to the action member of Transition from 1.x is to use the onFinished member from Timeline. Problem is that onFinished is only called at the end.

    For example, PauseTransition in 2.0 does not behave like it used to do in 1.x. In 2.0, the action associated to the transition is only executed whenever the transition ends. In 1.x it used to be executed every cycle. This prevents using PauseTransition as a timer as it was possible in 1.x.

    In 1.x, the following code prints "Hi!" 3 times:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import javafx.animation.transition.PauseTransition; 
     
    PauseTransition { 
        repeatCount: 3 
        duration: 500ms 
        action: function():Void { 
            println("Hi!"); 
        } 
    }.play();

    In 2.0, the following code only prints "Hi!" 1 time, when the transition ends:

    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
    import javafx.animation.PauseTransition; 
    import javafx.application.Application; 
    import javafx.builders.PauseTransitionBuilder; 
    import javafx.event.ActionEvent; 
    import javafx.event.EventHandler; 
    import javafx.stage.Stage; 
    import javafx.util.Duration; 
     
    public class Main extends Application { 
     
        public static void main(String[] args) { 
            Application.launch(Main.class, args); 
        } 
     
        @Override 
        public void start(Stage primaryStage) { 
            PauseTransition pauseTransition = new PauseTransitionBuilder() 
                    .cycleCount(3) 
                    .duration(Duration.valueOf(500)) 
                    .onFinished(new EventHandler<ActionEvent>() { 
                    @Override 
                        public void handle(ActionEvent event) { 
                    System.out.println("Hi!"); 
                } 
            }) 
                    .build(); 
            pauseTransition.play(); 
        } 
    }
    The way to fix this issue is to reintroduce the action member in Transition and to bind the onFinished member of the last KeyFrame of the Timeline to this value.
    Toujours aussi mal foutu leur Jira, les versions de JavaFX y sont listée par nom de code de projet interne... autant dire que qqun d'externe n'a aucune idée de quoi choisir lors de ses rapports de bugs...
    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

  12. #32
    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
    Avant que je ne mette ça dans les news de l'autre sujet, Jonathan Giles nous informe qu'une nouvelle bêta est désormais dispo : http://fxexperience.com/2011/06/java...available-now/

    Le plan actuelle est d'avoir un cycle de 2 semaines par bêta.

    Cette version, toujours Windows-only, ajoute le support des JVM 64bit mais d’après les retours sur fxexperience, certaines personnes on toujours qq problèmes de lancement (DLL 32 bit qui essaie de se charger a la place du DLL 64bit et plante).
    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

  13. #33
    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 Build 32 est disponible.
    http://download.oracle.com/javafx/2....ease_notes.htm

    J'aime bien celle-la
    •Issue RT-13373: JavaFX applet HTML does not work on Chrome if Firefox is not installed.
    PS : désolé pour le manque d'update cette semaine mais je suis fort occupé cote professionnel (et ça continuera la semaine prochaine).
    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

  14. #34
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 56
    Points : 118
    Points
    118
    Par défaut
    Merci pour toutes ces infos. Et vivement que cette nouvelle version de javaFX, sorte en version stable

  15. #35
    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
    La b34 est disponible (cependant les release notes a l'addresse ci-dessous semblent etre toujours celles de la b32).
    http://download.oracle.com/javafx/2....ease_notes.htm

    D'apres Jonathan Gilles, cette version ajoute le support du Drag'n Drop et un pont Java vers JavaScript pour WebView. Richard Blair indiquait la semaine derniere que cette version contiendrait une nouvelle API de concurrence/threading, je ne sais pas trop si c'est le cas.
    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

  16. #36
    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
    Jeté un rapide coup d’œil a la b34 et pour le moment le principal changement que j'ai du faire dans mon code c'est de changer la manière d'utiliser les builders :

    Code JavaFX pre-b34 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VBox vbox = new VBoxBuilder().id("chartBox").build();

    Code JavaFX post-b34 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VBox vbox = VBoxBuilder.create().id("chartBox").build();

    A noter que depuis 2~3 semaine Kleopatra (de son prénom Jeanette), précédemment un des piliers de la team SwingX, a débarque sur les forums de Sun et entreprend de chasser les inconsistances et les bugs dans l'API de collection (qui généralement donne lieu a des bugs ou des événements bizarres dans les contrôles). Sur le coup comme tout le monde répond a ses posts, je n'avais jamais autant vu de programmeurs d'Oracle participer a ces forums (alors qu'ils était plutôt aux abonnes absents l'an dernier et en début d’année).

    Note : apparemment, l'API de threading n'est pas encore présente dans cette version.

    Quant au DnD, il faudra aller regarder du cote de la gestion des DragEvent et des TransferMode (similaire a ce qui est defini dans TransferHandler dans AWT/Swing), ClipBoard ou encore DataFormat (cette derniere semble etre l'equivalent de DataFlavor en AWT/Swing):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Rectangle rect = new Rectangle(100, 100);
    rect.setOnDragDetected(new EventHandler() {
    [...]
    });
    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

  17. #37
    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
    La bêta 36 est disponible. D’après Jonathan Giles, cette dernière contient l'API de threading/worker, la possibilité d’éditer du texte riche (via le contrôle HTMLEditor) et un file chooser (appel a un composant natif si j'ai bien saisi les discussions sur le Jira - pas encore testé).

    Des changements sur l'API de propriété/binding sont annoncés dans le futur.

    FXML devrait etre inclus dans la prochaine beta.

    EDIT - la JavaFX doc du SDK et celle en ligne ne sont pas a jour et donc il manque la description de certaines accesseur et méthodes sur FileChooser notamment en ce qui concerne la mise en place des filtres de fichier (mais les méthodes sont bien la) ou encore le contenu du package javafx.concurrent (la encore les classes sont bien présentes).
    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

  18. #38
    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
    La beta 37 est disponible. Cette sortie rapide est destinée a donner un aperçu du FXML en avant-première. Les exemples et la documentation ne sont pas encore complétement finalisés, cela viendra ultérieurement.

    Citation Envoyé par http://fxexperience.com/2011/07/javafx-2-0-beta-build-37-available-now/
    “The hierarchical structure of an XML document closely parallels the structure of the JavaFX scene graph, making it easy to visualize the resulting output. Event handlers can be written with any JVM-compatible scripting language, such as JavaScript, Groovy, or Clojure. Additional features include on-the-fly localization, dynamic data binding, and code modularization.”
    Mis a part que c'est en XML et que ca permet d’écrire les event handlers dans d'autres langages, ça me rappelle un truc précédemment sorti (voir parties en gras)...
    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

  19. #39
    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
    La beta 38 est disponible.

    Parmi les changements indiqués : une révision des propriétés avec une consolidation des classes dans un unique package et quelques changements de nom : DoubleProperty -> SimpleDoubleProperty (en fait les classes de base sont desormais abstraites).

    ex:

    Code b37- : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private final StringProperty text = new StringProperty("toto");
    private final ObjectProperty<Truc> truc = new ObjectProperty<>();

    Code b38+ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private final StringProperty text = new SimpleStringProperty("toto");
    private final ObjectProperty<Truc> truc = new SimpleObjectProperty<>();

    Il y a aussi divers changements dans l'API de Cell (mais comme je ne me suis pas encore penche sur le sujet jusqu’à présent je ne sais pas trop quelles sont les différences).

    Passer a cette version demandera donc a modifier et recompiler son 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

  20. #40
    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
    Cette version ajoute également des outils de packaging préliminaires : http://blogs.oracle.com/thejavatutor..._beta_packager
    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. PANORAMIC V 0.9.6 beta disponible
    Par PANORAMIC dans le forum Basic
    Réponses: 14
    Dernier message: 01/07/2016, 14h12
  2. Microsoft Robotics Dev Studio 4 Beta Disponible
    Par RobotMaster dans le forum Robotique
    Réponses: 0
    Dernier message: 22/09/2011, 17h00
  3. Réponses: 32
    Dernier message: 07/06/2010, 12h02
  4. [SP-2010] SharePoint 2010 Beta disponible pour les abonnés MSDN
    Par LefortLudovic dans le forum SharePoint
    Réponses: 1
    Dernier message: 17/11/2009, 09h55
  5. Service Pack 2 Beta (disponible au public)
    Par Prosis dans le forum Windows Vista
    Réponses: 2
    Dernier message: 06/12/2008, 22h44

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