Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

JavaFX Composer Designer pour NetBeans 6.8
Un assistant pour la création d'interfaces graphiques JavaFX

Le , par galien

23PARTAGES

0  0 
15/12/2009 :

Citation Envoyé par Marcos Ickx Voir le message
JavaFX Composer Designer est disponible et vous permet de créer des interfaces JavaFX en mode design en glissant vos composants de la palette de contrôles vers votre fenêtre, et en gérant les évènements et autres propriétés.

http://wiki.netbeans.org/JavaFXCompo...GettingStarted
23/10/2009 :

Le nouveau netbeans est arrivé avec déja pleins de trucs sympa, comme le debugger qui nous donne les info pour l'EDT, et toutes les autres choses que l'on ne voyait qu'avec le "profiler".
C'est amusant de mettre en pause le "D3D screen updater"...

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 26/10/2009 à 0:34
Ah tant mieux tant mieux. Juste dommage que je ne sois pas en mode JFX actuellemement avec tous mes devs en pause (c'est l'une des periodes maintenance, C++, R & Linux de l'annee).

Qu'en est-il du debug des classes et libs Java dans un projet JFX ? Est-ce que cela fonctionne enfin ?

A ton avis, peux-t'on esperer la 1.3 avec la version finale de NetBeans 6.8 ?
0  0 
Avatar de galien
Membre averti https://www.developpez.com
Le 13/11/2009 à 16:38
Pour la 1.3 c'est ce qui est prévu, JIRA nous dit d'ailleurs que le plugin de NB pour SOMA est finalisation.
Ce qui est plus inquiétant en ce moment c'est plutôt le blocage de la fusion par l'Europe qui aura certainement des répercussions sur tous les produits de Sun.
M'est avis que BIG BLUE doit avoir plein de potes à la commission....
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 14/11/2009 à 0:34
Après un court test, j'ai laissé tombé l'utilisation de la 6.8 beta car l'éditeur Java décon** bien trop. J'attendrais la version finale.
A ce rythme vont nous la sortir pour fêter les 1 an de JavaFX.
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 30/11/2009 à 0:46
Qq screen du futur GUI editor pour NetBeans 6.8 (qui n'est pas la meme chose que l'outil d'authoring presente lors de la derniere JavaOne).

http://blogs.sun.com/lukas/entry/cre...in_javafx_with
http://blogs.sun.com/lukas/entry/sca...are_uneditable
http://blogs.sun.com/lukas/entry/how...o_name_the_new

Les rumeurs quant a la sortie imminente de JavaFX 1.3 semblent se faire de plus en plus insistantes...
0  0 
Avatar de galien
Membre averti https://www.developpez.com
Le 01/12/2009 à 5:37
Merci Bouye pour être allé à la chasse aux infos.
Cela m'a l'air bien sympa ce qu'ils ont fait, javafx va enfin rentrer dans la cour des grands(si ce n'était pas encore le cas), je vois déjà les esprits chagrins rabaisser leur caquet.
Enfin juste une chose pour nous, les warriors de javafx qui bossons dessus depuis la version interprétée, espérons que le code généré nous conviendra et qu'on aura la possibilité d'y inclure nos composants visuels sans tout réécrire.
Pour la 1.3 je prends les paris pour le tout début janvier, au vue de JIRA, merci du cadeau de noël Sun.
Je dirais une seule chose, putain deux ans!
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 11/12/2009 à 5:59
NetBeans 6.8 est desormais dispo... toujours package avec JavaFX 1.2.1 et... toujours sans editeur graphique pour JavaFX.

Le formattage du code JavaFX est desormais fonctionnel mais est un poil bugge nottament il a du mal lorsque le mot-cle fonction est utilise comme type de retour genre :

Code : Sélectionner tout
1
2
3
4
5
 function getActionForOption(option: WizardOption):function(): Void {
     var result: function(): Void= null;
     [...]
}
Essayez de formatter un truc comme ca et c'est le festival au lignes blanches.
Il a egalement tendance a mettre bien trop d'espace lorsquon a une arborescence d'instanciantion imbriquees ce qui peut etre assez genant pour la lecture.

Par exemple on passe de :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
def greet: GreetingScreen = GreetingScreen {
  onOpen: function () {}
  onCreate: function () {
    def slide: NewWizard_01 = NewWizard_01 {
      onBack: function (): Void {
        previousSlide(slide, greet);
      }
    };
    nextSlide(greet, slide);
  }
  onReview: function () {}
};
a :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def greet: GreetingScreen = GreetingScreen {
            onOpen: function () {

            }
            onCreate: function () {
                def slide: NewWizard_01 = NewWizard_01 {
                            onBack: function (): Void {
                                previousSlide(slide, greet);
                            }
                        };
                nextSlide(greet, slide);
            }
            onReview: function () {

            }
        };
Et encore la il n'y a que 3~4 niveaux d'imbrication.

Il a egalement toujours du mal a ordonner les imports correctement et ne peut pas s'empecher de laisser des sauts de lignes inutiles entre.

Bref c'est un bon pas en avant mais c'est pas encore ca ; a utiliser avec precaution.

Autre nouveaute dans l'editeur de code FX, le surlignage des variables inutilisees.

Pour le reste a part une nouvelle icone plus visible pour les projets FX je n'ai pas encore vu si desormais le deboggage du Java a travers JavaFX etait fontionnel.

Un poil decut pour le moment, je misais pas mal sur l'editeur graphique vu que je suis a nouveau en periode ou je me prend la tete avec des HBox et VBox mal alignee des qu'on met des Label ou Text dedans...
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 13/12/2009 à 23:41
Ah ! Une version pre-release de l'editeur de GUI JavaFX pour NetBeans devrait etre dispo cette semaine : http://www.developer.com/java/other/...to-Get-RAD.htm
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 15/12/2009 à 0:43
Apparement le refactoring fonctionne desormais, il est possible de renommer des classes.
0  0 
Avatar de Marcos Ickx
Expert éminent https://www.developpez.com
Le 15/12/2009 à 16:32
Citation Envoyé par bouye Voir le message
Ah ! Une version pre-release de l'editeur de GUI JavaFX pour NetBeans devrait etre dispo cette semaine : http://www.developer.com/java/other/...to-Get-RAD.htm
Elle est disponible.

http://wiki.netbeans.org/JavaFXCompo...GettingStarted
0  0 
Avatar de bouye
Rédacteur/Modérateur https://www.developpez.com
Le 15/12/2009 à 22:00
Interressant... on peut assez rapidement mettre en place une petite application de type assistant/wizard simple avec.

A noter que le code produit repose sur une class NetBeans org.netbeans.javafx.design.DesignState qui contient une Timeline dont chaque KeyFrame represente etat (un ecran) de l'assistant. Bien que non listee dans les dependances du projet, cette classe est automatiquement incluse dans le JAR qui est genere dans le repertoire dist (ouf).

Voici un exemple de code genere :

Code : Sélectionner tout
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
public class Main {

//LE CODE GENERE COMMENCE ICI.
    public-read var button2: javafx.scene.control.Button;
    public-read var textbox: javafx.scene.control.TextBox;
    public-read var label: javafx.scene.control.Label;
    public-read var label2: javafx.scene.control.Label;
    public-read var textbox2: javafx.scene.control.TextBox;
    public-read var button: javafx.scene.control.Button;
    public-read var scene: javafx.scene.Scene;
    
    public-read var currentState: org.netbeans.javafx.design.DesignState;
    
    // <editor-fold defaultstate="collapsed" desc="Generated Init Block">
    init {
        button2 = javafx.scene.control.Button {
            layoutX: 419.0
            layoutY: 290.0
            text: "Button"
        };
        textbox = javafx.scene.control.TextBox {
            visible: false
            layoutX: 248.0
            layoutY: 131.0
        };
        label = javafx.scene.control.Label {
            visible: false
            layoutX: 175.0
            layoutY: 144.0
            text: "Label"
        };
        label2 = javafx.scene.control.Label {
            visible: false
            layoutX: 152.0
            layoutY: 181.0
            text: "Label"
        };
        textbox2 = javafx.scene.control.TextBox {
            visible: false
            layoutX: 213.0
            layoutY: 166.0
        };
        button = javafx.scene.control.Button {
            visible: false
            layoutX: 355.0
            layoutY: 300.0
            text: "Button"
        };
        scene = javafx.scene.Scene {
            width: 480.0
            height: 320.0
            content: javafx.scene.layout.Panel {
                content: getDesignRootNodes ()
            }
        };
        
        currentState = org.netbeans.javafx.design.DesignState {
            names: [ "New State 1", "New State 2", ]
            stateChangeType: org.netbeans.javafx.design.DesignStateChangeType.PAUSE_AND_PLAY_FROM_START
            actual: 0
            timelines: [
                javafx.animation.Timeline {
                    keyFrames: [
                        javafx.animation.KeyFrame {
                            time: 0.001ms
                            action: function() {
                                button2.layoutX = 419.0;
                                button2.layoutY = 290.0;
                                button2.text = "Next >";
                                button2.action = button2ActionAtNewState1;
                                textbox.visible = false;
                                textbox.layoutX = 248.0;
                                textbox.layoutY = 131.0;
                                label.visible = false;
                                label.layoutX = 175.0;
                                label.layoutY = 144.0;
                                label.text = "Label";
                                label2.visible = false;
                                label2.layoutX = 152.0;
                                label2.layoutY = 181.0;
                                label2.text = "Label";
                                textbox2.visible = false;
                                textbox2.layoutX = 213.0;
                                textbox2.layoutY = 166.0;
                                button.visible = false;
                                button.layoutX = 355.0;
                                button.layoutY = 300.0;
                                button.text = "Button";
                            }
                        }
                    ]
                }
                javafx.animation.Timeline {
                    keyFrames: [
                        javafx.animation.KeyFrame {
                            time: 0.001ms
                            action: function() {
                                button2.layoutX = 408.0;
                                button2.layoutY = 290.0;
                                button2.text = "Connect";
                                button2.action = button2ActionAtNewState2;
                                textbox.visible = true;
                                textbox.layoutX = 191.0;
                                textbox.layoutY = 125.0;
                                label.visible = true;
                                label.layoutX = 152.0;
                                label.layoutY = 131.0;
                                label.text = "Login";
                                label2.visible = true;
                                label2.layoutX = 127.0;
                                label2.layoutY = 159.0;
                                label2.text = "Password";
                                textbox2.visible = true;
                                textbox2.layoutX = 191.0;
                                textbox2.layoutY = 155.0;
                                button.visible = true;
                                button.layoutX = 324.0;
                                button.layoutY = 290.0;
                                button.text = "< Previous";
                                button.action = buttonActionAtNewState2;
                            }
                        }
                    ]
                }
            ]
        }
    }// </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Generated Design Functions">
    public function getDesignRootNodes () : javafx.scene.Node[] {
        [ button2, textbox, label, label2, textbox2, button, ]
    }
    
    public function getDesignScene (): javafx.scene.Scene {
        scene
    }// </editor-fold>

//LE CODE GENERE SE TERMINE ICI.

    function button2ActionAtNewState2 (): Void {
        var design = NewDesktopDesign {}
        scene.stage.scene = design.getDesignScene ();
    }

    function buttonActionAtNewState2 (): Void {
        currentState.previous();
    }

    function button2ActionAtNewState1 (): Void {
        currentState.next();
    }

}
Donc ici on a deux ecran, lors du changement de frame, certains controles sont caches et d'autres affiches. Les boutons permettent de passer d'un etat a l'autre :
  • bouton 2 (Next > dans l'etat 1 : va a l'etat 2
  • bouton 1 (< Previous) dans l'etat 2 : va a l'etat 1
  • bouton 2 (Next > dans l'etat 2 : remplace la scene par un autre assistant. Oui car comme tout est dans la meme classe et que chaque etat n'est pas dans une classe separee c'est un peu le bordel et la soupe aux variables si on se met a tout coder dans une seule classe.


Au niveau du composer, il est fonctionnel bien que d'un niveau inferieur a celui de Matisse

Hum au final ce n'est pas trop ce que j'imaginais. Ca va certes m'aider pour me permettre de designer qq trucs car au moins je vais maintenant pouvoir voir les placements absolus (pour les placement dynamiques c'est un peu foutu tant qu'ils nous pondent pas la 1.3 je sens ca) et en recopiant le code produit ailleurs.
0  0