Le SDK JavaFX 1.2.1 est disponible
Avec quelques corrections de bugs mineurs

Le , par bouye, Rédacteur/Modérateur
Comme Galien l'a remarqué il y a quelques jours, les binaires de JavaFX 1.2.1 sont disponibles via le JNLP du site pour la distribution.

C'est plutot discret mais la section download du site officiel a été mise à jour et permet de récupérer le SDK JavaFX 1.2.1 :

http://javafx.com/downloads/all.jsp

C'est disponible bien sur pour Windows, Mac, Linux et Solaris x86

Release notes : http://java.sun.com/javafx/1/referen...tes-1-2-1.html


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de PhiLho PhiLho - Membre régulier http://www.developpez.com
le 10/09/2009 à 15:02
J'ai pas encore essayé la 1.2.1, téléchargée, installée sur une machine, mais pas encore regardé si des bugs ont disparu.

Un truc sympa est que la doc a enfin été mise à jour, corrigeant plein de petites scories ( , images manquantes, fautes de typo...), mais il en reste encore (Color.fromAWTColor est encore mentionné alors qu'il a été viré de la 1.2).
Avatar de Fr3nchK1ss Fr3nchK1ss - Nouveau membre du Club http://www.developpez.com
le 10/09/2009 à 15:23
Aucun changement à faire dans mon code pour compiler en 1.2.1 par rapport à la 1.2. C'est déjà ça.
Par contre, je n'ai pas noté de réelles différences de performances, et les problèmes que j'ai avec la 1.2 sont toujours là.
Avatar de PhiLho PhiLho - Membre régulier http://www.developpez.com
le 10/09/2009 à 17:06
Tiens, j'ai préparé un petit Stage pour re-tester le dragging d'un Stage par un de ses éléments (au lieu de la barre de titre - eg. quand on se passe de cette dernière).
Et bien je n'arrive pas à reproduire le bug où la fenêtre devenait folle, essayant de se coller à tous les côtés de l'écran à la fois.
Alors que je suis encore en 1.2...
C'est peut-être dû au fait que j'ai upgradé à Java 1.6.0_16...
Avatar de galien galien - Membre averti http://www.developpez.com
le 10/09/2009 à 23:52
Tiens madame Fowler ose enfin s'expliquer sur les layout etc, m'est avis qu'elle attendait aussi la 1.2.1 pour écrire des exemples qui fonctionnent
http://weblogs.java.net/blog/aim/arc...avafx12-layout
Avatar de bouye bouye - Rédacteur/Modérateur http://www.developpez.com
le 11/09/2009 à 0:17
Ca serait mieux si les images des exemples etaient dans l'article
Avatar de PhiLho PhiLho - Membre régulier http://www.developpez.com
le 11/09/2009 à 15:40
Ça serait mieux si je n'avais pas "Access Denied!" (même en m'identifiant) sur cette page... Serait-je arrivé trop tard ? Ou trop tôt ? (Si elle l'a retiré pour le retravailler...)

Je viens de tester la 1.2.1 sur mes petits fichiers de test de bugs. Pas de progrès visible, y compris sur un qui était sensé être corrigé pour cette version... :-(

[MàJ] Ah, si. Maintenant un Slider peut avoir une valeur min différente de zéro et se comporter normalement. Avant, le curseur avait un comportement erratique dans ce cas.
Ah, et les liens hypertexte respectent enfin les styles (couleur, fonte...)

Pour info, je viens de rapporter le bug RT-5674 (Scale of a SVGPath in a Button's graphic isn't taken in account in button internal layout) : si on veut utiliser un SVGPath comme image sur un bouton, on a un sacré problème de taille si on redimensionne ladite image...
Avatar de bouye bouye - Rédacteur/Modérateur http://www.developpez.com
le 12/09/2009 à 3:06
Elle a du le retirer temporairement pour réparer liens liens cassés sur les images et le code. Enfin bon désormais je vois l'article dans son intégralité.
Avatar de bouye bouye - Rédacteur/Modérateur http://www.developpez.com
le 14/09/2009 à 6:48
Chez moi j'ai toujours des comportement erratiques parfois sur les sliders nottament j'ai un Slider qui controle une valeur alpha... et ca deraille avec un min/max de 0.33/1.0 alors qu'elle fonctionne tres bien avec un min/max de 0.0/1.0

Et sinon dans le genre c'est pas top car le binding decoooooooooooone je me suis dis ce matin "chouette, maintenant que les layouts fonctionnent a peu pres correctement je vais commencer a creer de vraies skins pour mes controles" et donc je suis parti pour faire un controle simple : un separateur.

Et la, c'est la Groβ Katastroph !
Code : Sélectionner tout
1
2
3
4
5
        def separator:Separator = Separator { 
            id: "ZoomNode:separator"; // NOI18N 
            // Does not work for some reason. 
            length: bind iconSize; 
        }
Et ban ca ne fonctionne pas ! La taille du separateur ne change jamais et est toujours de 0. Je donc suis oblige de faire ainsi pour que cela fonctionne :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
        def separator:Separator = Separator { 
            id: "ZoomNode:separator"; // NOI18N 
            // Does not work for some reason. 
            //length: bind iconSize; 
        } 
        def iconSizeTemp:Number = bind iconSize on replace { 
            separator.length = iconSizeTemp; 
        }
Et le pire c'est que si je met cela :

Code : Sélectionner tout
1
2
3
4
5
6
7
        def separator:Separator = Separator { 
            id: "ZoomNode:separator"; // NOI18N 
            length: bind iconSize; 
        } 
        def iconSizeTemp:Number = bind iconSize on replace { 
            separator.length = iconSizeTemp; 
        }
Il n'y a aucune erreur de binding generee c'est toooooooooooooooooooooooop ! Par contre pareil le separateur n'est jamais redimensionne.

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
package org.spc.ofp.guifx; 
 
import javafx.scene.control.Control; 
import org.spc.ofp.guifx.skin.basic.BasicSeparatorSkin; 
import org.spc.ofp.gui.Orientation; 
import org.spc.ofp.guifx.skin.basic.BasicLnFConstants; 
import javafx.scene.paint.Color; 
 
/** 
 * A separator used in an UI. 
 * Most of the time it should be a single line though some separator skin may display a label. 
 * @author Fabrice Bouyé (fabriceb@spc.int) 
 */ 
public class Separator extends Control { 
    /** 
    * {@inheritDoc} 
    */ 
    override var skin = BasicSeparatorSkin{}; 
 
    /** 
    * Orientation of the separator. 
    */ 
    public var orientation:Orientation = Orientation.VERTICAL; 
 
    /** 
    * Length of the separator. 
    */ 
    public var length:Number = BasicLnFConstants.SEPARATOR_LENGTH; 
 
    /** 
    * Color of the separator. 
    */ 
    public var color:Color = BasicLnFConstants.SEPARATOR_COLOR; 
 
    /** 
    * Color of the shadow. 
    */ 
    public var shadowColor:Color = BasicLnFConstants.SEPARATOR_SHADOW_COLOR; 
}
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
 
package org.spc.ofp.guifx.skin; 
 
import javafx.scene.control.Skin; 
 
/** 
 * Base separator skin. 
 * @author Fabrice Bouyé (fabriceb@spc.int) 
 */ 
public abstract class SeparatorSkin extends Skin { 
 
}
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
96
97
98
99
100
101
102
103
104
105
106
107
 
package org.spc.ofp.guifx.skin.basic; 
 
import org.spc.ofp.guifx.skin.SeparatorSkin; 
import javafx.scene.shape.Line; 
import org.spc.ofp.guifx.Separator; 
import org.spc.ofp.gui.Orientation; 
import org.spc.ofp.guifx.skin.basic.BasicLnFConstants; 
import javafx.scene.Group; 
import javafx.scene.paint.Color; 
 
import org.spc.ofp.guifx.UIUtilities; 
 
/** 
 * Basic implementation of a separator. 
 * @author Fabrice Bouyé (fabriceb@spc.int) 
 */ 
public class BasicSeparatorSkin extends SeparatorSkin { 
    /** 
    * Source control. 
    */ 
    def separatorControl:Separator = bind control as Separator; 
 
    /** 
    * Orientation of the separator. 
    */ 
    var orientation:Orientation = bind separatorControl.orientation on replace { 
        //println("BasicSeparatorSkin:orientation {orientation} on separator {separatorControl.id}"); 
    } 
 
    /** 
    * Length of the separator. 
    */ 
    var length:Number = bind separatorControl.length on replace { 
        //println("BasicSeparatorSkin:length {length} on separator {separatorControl.id}"); 
    } 
 
    /** 
    * Color of the separator. 
    */ 
    var color:Color = bind separatorControl.color; 
 
    /** 
    * Color of the separator. 
    */ 
    var shadowColor:Color = bind separatorControl.shadowColor; 
 
    def strokeWidth:Number = BasicLnFConstants.SEPARATOR_STROKE_SIZE; 
 
    def line:Line = Line { 
        stroke: bind UIUtilities.createTwinFadingGradient(color, orientation); 
        strokeWidth: strokeWidth; 
        startX: 0; 
        startY: 0; 
        endX: bind if (orientation == Orientation.VERTICAL) { 0 } else { length }; 
        endY: bind if (orientation == Orientation.VERTICAL) { length } else { 0 }; 
    } 
 
    def shadow:Line = Line { 
        stroke: bind UIUtilities.createTwinFadingGradient(shadowColor, orientation); 
        opacity: 0.33 
        strokeWidth: strokeWidth; 
        startX: bind if (orientation == Orientation.VERTICAL) { strokeWidth } else { 0 }; 
        startY: bind if (orientation == Orientation.VERTICAL) { 0 } else { strokeWidth }; 
        endX: bind if (orientation == Orientation.VERTICAL) { strokeWidth } else { length }; 
        endY: bind if (orientation == Orientation.VERTICAL) { length } else { strokeWidth }; 
    } 
 
    /** 
    * {@inheritDoc} 
    */ 
    init { 
        node = Group { 
        // Need to cache because gradients are still somewhat fucked up in 1.2.1 release. 
            cache: true; 
            content: [ line, shadow ] 
        } 
    } 
 
    /** 
    * {@inheritDoc} 
    */ 
    override function getPrefWidth(height: Number): Number { 
        return node.boundsInLocal.width; 
    } 
 
    /** 
    * {@inheritDoc} 
    */ 
    override function getPrefHeight(width: Number): Number { 
        return node.boundsInLocal.height; 
    } 
 
    /** 
    * {@inheritDoc} 
    */ 
    public override function contains(localX:Number, localY:Number):Boolean { 
        return node.contains(localX, localY); 
    } 
 
    /** 
    * {@inheritDoc} 
    */ 
    public override function intersects(localX: Number, localY:Number, localWidth:Number, localHeight:Number):Boolean { 
        return node.intersects(localX, localY, localWidth, localHeight); 
    } 
}
Avatar de bouye bouye - Rédacteur/Modérateur http://www.developpez.com
le 07/10/2009 à 6:37
Layout blues* 10^9....

J'adooooooooooore les composants textuels (Label et Text), soit c'est jamais bien aligne soit ca n'a jamais la bonne taille avant le 1er affichage ou un eventuel rafraichissement.

Par exemple ici les composants ne s'affichent pas correctement tant qu'on ne deplace pas la souris sur la fenetre. Evidement cela n'arrive que quand on utilise un HBox, VBox ou autre truc similaire...

[ATTACH]53733d1/a/a/a" />

Note : ici je suis en train d'essayer de creer l'equivalent d'un JTabbedPane en scene graph.
Avatar de galien galien - Membre averti http://www.developpez.com
le 08/10/2009 à 5:12
avec un petit appel à layout() ca deconne aussi?
Avatar de bouye bouye - Rédacteur/Modérateur http://www.developpez.com
le 08/10/2009 à 6:20
Pas juste un et meme comme ca ca n'est pas encore parfait.
Offres d'emploi IT
Reconversion ingénieur informatique h/f
Adaming - Nord Pas-de-Calais - France
Community manager h/f
Adaming - Ile de France - Paris (75000)
Business Manager Energie (H/F)
Alten - Ile de France - Boulogne

Voir plus d'offres Voir la carte des offres IT
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -