
FAQ JavaFXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 507, derni�re mise � jour : 2 novembre 2016 Ajouter une question
Cette FAQ a �t� r�alis�e � partir des questions fr�quemment pos�es sur le forum JavaFX de http://java.developpez.com ainsi que l'exp�rience personnelle des auteurs.
Nous tenons � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne pr�tend pas non plus �tre compl�te. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant r�dacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
Nous avons vu que nous pouvons d�j� transformer n'importe quel n�ud via des propri�t�s intrins�ques telles que translateX, rotate, scaleX, etc. Cependant, il existe un autre moyen de transformer un n�ud : les transformations. Chaque n�ud poss�de une liste observable de transformations transforms() qui lui sont appliqu�es ; cette liste est accessible via sa m�thode getTransforms().
Les transformations sont disponibles dans le package javafx.scene.transform. Actuellement, seule une poign�e de transformations affines sont disponibles :
- Affine - une transformation affine g�n�rique ;
- Rotate - une rotation qui permet de sp�cifier l'angle, l'axe et le centre de la rotation ;
- Scale - une mise � l��chelle qui permet de sp�cifier le point de pivot ;
- Shear - une inclinaison suivant les axes X et/ou Y et qui permet de sp�cifier le point de pivot ;
- Translate - une translation suivant les axes X, Y et/ou Z.
Note : une transformation affine est une transformation qui conserve le parall�lisme des droites.
Ces transformations sont plus g�n�riques que celles accessibles via les propri�t�s d'un n�ud. Par exemple, ici on peut sp�cifier le centre de la transformation Rotate, ce qui n'est pas le cas de la propri�t� rotate qui utilise toujours le centre de la boite englobante de l'objet comme centre de rotation.
Ces transformations s'appliquent sur un n�ud dans l'ordre de la liste qui les contient. De plus, elles s'appliquent sur le noeud AVANT toute valeur plac�e dans ses propri�t�s telles que translateX, rotate, scaleX, etc.
Il faut ajouter un objet de type javafx.scene.transform.Translate dans la liste des transformations du n�ud.
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Main extends Application { @Override public void start(Stage primaryStage) { final Rectangle rectangle = new Rectangle(0, 0, 150, 100); rectangle.setFill(Color.RED); final Translate translate = new Translate(100, 100); rectangle.getTransforms().add(translate); final Pane root = new Pane(); root.getChildren().setAll(rectangle); final Scene scene = new Scene(root, 350, 300); primaryStage.setTitle("Test de transformation de translation"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } |
Ici, le rectangle gris en pointill� indique la position d'origine du rectangle rouge :

Ici, nous avons d�plac� notre rectangle de 100 pixels vers la droite sur l'axe X et de 100 pixels vers la droite sur l'axe Y.
Comme il s'agit d'une transformation, ces modifications et changements de rep�res sont appliqu�s avant ceux sp�cifi�s dans les propri�t�s translateX, rotate, scaleX, etc.
Il faut ajouter un objet de type javafx.scene.transform.Rotate dans la liste des transformations du n�ud.
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Main extends Application { @Override public void start(Stage primaryStage) { final Rectangle rectangle = new Rectangle(100, 100, 150, 100); rectangle.setFill(Color.RED); final Rotate rotate = new Rotate(10); rectangle.getTransforms().add(rotate); final Pane root = new Pane(); root.getChildren().setAll(rectangle); final Scene scene = new Scene(root, 350, 300); primaryStage.setTitle("Test de transformation de rotation"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } |
Ici, le rectangle gris en pointill� indique la position d'origine du rectangle rouge :

Ici, nous avons fait tourner notre rectangle rouge de 10 degr�s. Cependant, le centre de la rotation n'est plus d�sormais le centre de la boite englobante du rectangle, mais l'origine de la sc�ne, le point (0,0).
Comme il s'agit d'une transformation, ces modifications et changements de rep�res sont appliqu�s avant ceux sp�cifi�s dans les propri�t�s translateX, rotate, scaleX, etc.
Il faut ajouter un objet de type javafx.scene.transform.Scale dans la liste des transformations du n�ud.
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Main extends Application { @Override public void start(Stage primaryStage) { final Rectangle rectangle = new Rectangle(100, 100, 150, 100); rectangle.setFill(Color.RED); final Scale scale = new Scale(0.5, 0.5); rectangle.getTransforms().add(scale); final Pane root = new Pane(); root.getChildren().setAll(rectangle); final Scene scene = new Scene(root, 350, 300); primaryStage.setTitle("Test de transformation de mise � l'�chelle"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } |
Ici, le rectangle gris en pointill� indique la position d'origine du rectangle rouge :

Ici, nous avons r�duit l��chelle de notre rectangle rouge de 50 % sur l'axe X et de 50 % sur l'axe Y. Cependant, le point de pivot de la mise � l��chelle n'est plus d�sormais le centre de la boite englobante du rectangle, mais l'origine de la sc�ne, le point (0,0).
Comme il s'agit d'une transformation, ces modifications et changements de rep�res sont appliqu�s avant ceux sp�cifi�s dans les propri�t�s translateX, rotate, scaleX, etc.
Il faut ajouter un objet de type javafx.scene.transform.Shear dans la liste des transformations du n�ud.
Code Java : | 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 | public class Main extends Application { @Override public void start(Stage primaryStage) { final Rectangle rectangle = new Rectangle(100, 100, 150, 100); rectangle.setFill(Color.RED); final Shear shear = new Shear(0.5, 0.5); shear.setPivotX(100 + 150 / 2); shear.setPivotY(100 + 100 / 2); rectangle.getTransforms().add(shear); final Pane root = new Pane(); root.getChildren().setAll(rectangle); final Scene scene = new Scene(root, 350, 300); primaryStage.setTitle("Test de transformation d'inclinaison"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } |
Ici, le rectangle gris en pointill� indique la position d'origine du rectangle rouge :

Ici, nous avons appliqu� sur notre rectangle rouge un modificateur de d�placement de 0.5 sur l'axe X et sur l'axe Y. De plus, nous avons plac� le point de pivot au centre de la boite englobante de notre rectangle.
Comme il s'agit d'une transformation, ces modifications et changements de rep�res sont appliqu�s avant ceux sp�cifi�s dans les propri�t�s translateX, rotate, scaleX, etc.
Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.