IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
logo

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.

SommaireSceneGraphCSS (16)
pr�c�dent sommaire suivant
 

Le guide de r�f�rence des CSS de JavaFX est disponible en ligne :

Mis � jour le 11 septembre 2014 bouye

Il s'agit des apparences standard (Look and Feel) de JavaFX :

  • Caspian est l'apparence de JavaFX 1.x et 2.x. Cette apparence reste disponible dans JavaFX 8 m�me si sa feuille de style est l�g�rement diff�rente � cause de modifications sur les skins des contr�les.

  • Modena est l'apparence par d�faut de JavaFX 8.





Ces feuilles de style existent en version standard (pour PC de bureau) et en variantes contraste ���lev頻 (pour les malvoyants) ou ��embarqu頻 (pour les plateformes disposant d��crans tactiles).

Mis � jour le 11 septembre 2014 bouye

Dans JavaFX 8, Modena est l'apparence par d�faut. Il reste cependant possible d'activer Caspian en utilisant l'instruction suivante dans votre application :

Code Java : S�lectionner tout
setUserAgentStylesheet(STYLESHEET_CASPIAN);

Il est �galement possible de revenir sous Modena en utilisant :

Code Java : S�lectionner tout
setUserAgentStylesheet(STYLESHEET_MODENA);

Mis � jour le 12 septembre 2014 bouye

Vous devez localiser le fichier jfxrt.jar dans votre installation de JRE ou du JDK (le chemin varie suivant les versions). Ouvrez-le ensuite avec votre gestionnaire d'archives favori (WinRAR, 7-zip, etc.). Les fichiers css sont situ�s aux emplacements suivants :

  • Caspian : dans le package com.sun.javafx.scene.control.skin.caspian, cherchez le fichier caspian.css ;
  • Modena : dans le package com.sun.javafx.scene.control.skin.modena, cherchez le fichier modena.css.


Ces fichiers devraient �galement �tre disponibles dans le Mercurial de l'OpenJFX.

Il peut �tre int�ressant de jeter un coup d��il au contenu de ces fichiers pour comprendre l'architecture interne des skins des contr�les fournis dans l'API ou m�me pour essayer de comprendre comment reskiner un contr�le complexe.

Mis � jour le 11 septembre 2014 bouye

Les n�uds graphiques disposent d'une propri�t� style qui permet de passer une chaine de texte contenant des s�lecteurs CSS : il s'agit du style inline.

Prenons un exemple qui affiche un unique bouton � l��cran :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Button button = new Button("Salut le monde !"); 
        final StackPane root = new StackPane(button); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Style inline"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne comme r�sultat :



Nous allons maintenant modifier directement le style du bouton en changeant la valeur de sa propri�t� style :

Code Java : S�lectionner tout
button.setStyle("-fx-font-size: 2.5em; -fx-font-weight: bold; -fx-padding: 50 20 50 20;");


Ce qui nous donne comme r�sultat :



Nous venons de modifier l'apparence du bouton via les CSS en utilisant le style inline !

Mis � jour le 11 septembre 2014 bouye

Une feuille de style, stock�e dans un fichier css, doit �tre r�f�renc�e par son URL pour pouvoir �tre utilis�e. Elle peut provenir de plusieurs sources :

  • le fichier css peut �tre empaquet� dans une biblioth�que ou une application et r�cup�r� via le m�canisme des ressources ou des ClassLoader ;
  • le fichier css peut �tre sur un disque local et peut �tre r�f�renc� par les classes File, Path, URI ou URL ;
  • le fichier css peut �tre h�berg� sur un site web distant et on peut y acc�der par une String ou une URL contenant son chemin d�acc�s.

Mis � jour le 11 septembre 2014 bouye

Les fichiers bss contiennent des feuilles de style pr�compil�es. Il s'agit de feuilles de style pr�tes � l'emploi dont l'usage requiert moins de ressources puisqu'il n'y aura alors pas besoin de cr�er un parseur pour fichiers css.

Un fichier bss peut provenir des m�mes sources que les fichiers css et doit �tre charg� de la m�me mani�re� en prenant garde d'utiliser la bonne extension du fichier dans le nom de la feuille de style, naturellement.

Utiliser des fichiers bss au lieu de fichiers css est optionnel, rien ne vous force � les utiliser. Cependant, comme ils sont moins gourmands en ressources, ils forment un substitut int�ressant lors du d�ploiement d'applications en production ou sur des plateformes aux capacit�s et ressources limit�es.

Mis � jour le 11 septembre 2014 bouye

Vous devez invoquer l�outil javapackager du JDK (javafxpackager dans les versions ant�rieures au JDK 8_u20) en passant comme arguments l'action -createbss suivie de l'argument -srcfiles, puis du nom du fichier css source suivi de l'argument -outdir et enfin le chemin du r�pertoire destination.

Par exemple la commande suivante :

Code : S�lectionner tout
javapackager -createbss -srcfiles MonCSS.css -outdir .

Cette commande compile le fichier MonCSS.css en un fichier MonCSS.bss et place ce nouveau fichier dans le r�pertoire courant.

Certains IDE tels que NetBeans peuvent offrir directement un support de la compilation des fichiers css dans les options du projet. Il est �galement possible de cr�er une t�che ANT charg�e de la compilation des feuilles de style.

Mis � jour le 11 septembre 2014 bouye

Pour ajouter une ou plusieurs feuilles de style � une sc�ne, il nous faut ajouter leur URL dans la liste observable stylesheets de la sc�ne. Les d�finitions des feuilles de style s'appliquent dans l'ordre dans lequel les URL sont ajout�es dans la liste.

Commen�ons par cr�er une petite application de test :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Button button1 = new Button("Salut le monde !"); 
        final Button button2 = new Button("Comment allez-vous ?"); 
        final VBox root = new VBox(button1, button2); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Chargement CSS sur la sc�ne"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne l'affichage suivant :



Nous allons ensuite cr�er un fichier CSS avec le contenu suivant :

Code CSS : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.root { 
    -fx-background-color: lightskyblue; 
} 
VBox { 
    -fx-spacing: 10; 
    -fx-alignment: center; 
} 
.button { 
    -fx-base: green; 
    -fx-focus-color: limegreen; 
    -fx-font-size: 2.5em; 
} 
.button:focused { 
    -fx-background-insets: -5, 1, 2, -1.4, 2.6; 
}

Nous allons pouvoir l'attacher � la sc�ne de la mani�re suivante :

Code Java : S�lectionner tout
1
2
final URL cssURL = getClass().getResource("CssScene.css"); 
scene.getStylesheets().add(cssURL.toExternalForm());

Apr�s chargement, la pr�sentation de notre application s'en trouve toute modifi�e :

Mis � jour le 11 septembre 2014 bouye

Pour ajouter une ou plusieurs feuilles de style � un n�ud, il nous faut ajouter leur URL dans la liste observable stylesheets du n�ud. Les d�finitions des feuilles de style s'appliquent dans l'ordre dans lequel les URL sont ajout�es dans la liste.

Nous allons maintenant charger un second fichier css contenant le style suivant :

Code CSS : S�lectionner tout
1
2
3
4
.button { 
    -fx-base: orange; 
    -fx-focus-color: orangered; 
}

Reprenons notre application pr�c�dente, mais d�sormais nous allons appliquer la feuille de style uniquement sur le premier bouton sans rien appliquer sur la sc�ne :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Button button1 = new Button("Salut le monde !"); 
        final URL buttonCSSURL = getClass().getResource("CssButton.css"); 
        button1.getStylesheets().add(buttonCSSURL.toExternalForm()); 
        final Button button2 = new Button("Comment allez-vous ?"); 
        final VBox root = new VBox(button1, button2); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Chargement CSS sur un n�ud"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne comme r�sultat :



Nous pouvons voir que seul le bouton sur lequel nous avons appliqu� la feuille de style a chang�. Comme la sc�ne n'a pas charg� sa feuille de style, nous avons encore une apparence de bouton proche de l'apparence standard.

Modifions notre code de mani�re � charger � nouveau une feuille de style sur la sc�ne :

Code Java : S�lectionner tout
1
2
final URL sceneCSSURL = getClass().getResource("CssScene.css"); 
scene.getStylesheets().add(sceneCSSURL.toExternalForm());

Ce qui nous donne comme r�sultat :



Comme nous pouvons le voir, la sc�ne est � nouveau enti�rement d�cor�e, mais le premier bouton arbore d�sormais une apparence qui est un m�lange des deux feuilles de style : le style de la sc�ne, modifi� par son style propre.

Mis � jour le 11 septembre 2014 bouye

Les styles sont appliqu�s dans l'ordre suivant :

  1. Le style d�fini dans les feuilles de style de JavaFX standard Caspian ou Modena et leurs d�riv�s contrastes �lev�s, plateformes tactiles, etc. ;
  2. La ou les feuilles de style plac�es sur la sc�ne ;
  3. Les styles plac�s sur les n�uds parents de notre n�ud par une ou des feuilles de style ou en inline ;
  4. La ou les feuilles de style plac�es sur notre n�ud ;
  5. Le style �crit en inline sur notre n�ud.

Mis � jour le 11 septembre 2014 bouye

JavaFX utilise une feuille de style diff�rente pour ses contr�les quand une application s�ex�cute sur une plateforme embarqu�e et tactile. Par exemple, la plupart des contr�les disposant de barre de d�filement ne les affichent d�sormais que lorsque l'utilisateur fait d�filer l'affichage. Le menu contextuel des champs de saisie apparait par pression prolong�e sur la zone de texte avec une repr�sentation diff�rente, mieux adapt�e aux petits �crans. Ces contr�les disposent �galement de curseurs de s�lection du texte. Le s�lecteur de pages r�pond aux �v�nements de balayage pour effectuer un changement de s�lection vers la gauche ou la droite, etc.

Il est possible d'activer cette feuille de style sur ordinateur de bureau en utilisant le param�tre suivant de la JVM :

Code : S�lectionner tout
-Dcom.sun.javafx.touch=true

Mis � jour le 7 octobre 2014 bouye

Il existe trois mani�res d'associer un s�lecteur CSS � un n�ud :

Identit�
Il est possible de sp�cifier une identit� sur un n�ud en modifiant la valeur de sa propri�t� id.

Par exemple :

Code Java : S�lectionner tout
1
2
final Button button1 = new Button("Bouton 1"); 
button1.setId("button1");

Il est alors possible d�utiliser cette identit� en tant que s�lecteur CSS :

Code CSS : S�lectionner tout
1
2
3
#button1 { 
    -fx-base: red; 
}

D�sormais, tous les n�uds portant l�identit� button1 ont une couleur de base rouge.

Classe de style
Il est possible d'ajouter, supprimer ou modifier des classes de style sur un n�ud en modifiant le contenu de sa liste observable styleClass.

Par exemple :

Code Java : S�lectionner tout
1
2
final Button button2 = new Button("Bouton 2"); 
button2.getStyleClass().add("button2");

Il est alors possible d�utiliser cette classe de style en tant que s�lecteur CSS :

Code CSS : S�lectionner tout
1
2
3
.button2 { 
    -fx-base: blue; 
}

D�sormais, tous les n�uds disposant de la classe de style button2 ont une couleur de base bleue.

Un n�ud peut avoir une multitude de classes de style.

Note : la plupart des n�uds et contr�les disposent d'une classe de style par d�faut ; celle-ci est d�crite dans le guide des CSS de JavaFX ou dans la Javadoc du n�ud en question.

Pseudoclasse
Il est �galement possible d'activer ou de d�sactiver une pseudoclasse sur un noeud en invoquant sa m�thode pseudoClassStateChanged().

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
protected static final PseudoClass FOO_PSEUDO_CLASS = PseudoClass.getPseudoClass("foo"); 
  
[...] 
  
final Button button3 = new Button("Bouton 3"); 
button3.pseudoClassStateChanged(FOO_PSEUDO_CLASS, true);

Ici, nous avons activ� la pseudoclasse foo sur le bouton. Comme nous n'avons pas sp�cifi� de classe de style, nous allons utiliser celle par d�faut des boutons qui est le style button :

Code CSS : S�lectionner tout
1
2
3
.button:foo { 
    -fx-base: green; 
}

D�sormais, tous les n�uds disposant de la classe de style button et dont la pseudoclasse foo est activ�e auront une couleur de base verte.

Un n�ud peut avoir une multitude de pseudoclasses.

Mis � jour le 28 octobre 2014 bouye

Il est possible d'importer une feuille de style dans une autre feuille de style en utilisant la r�gle @import.

Par exemple :

Code CSS : S�lectionner tout
@import "style2.css";

Mis � jour le 29 octobre 2014 bouye

Il est possible d'empaqueter des polices avec l�application et de les utiliser depuis des feuilles de style en d�finissant de nouvelles familles de polices gr�ce � la r�gle @font-face. Cela permet d'utiliser des polices de caract�res qui ne sont pas install�es sur le syst�me.

Par exemple :

Code CSS : S�lectionner tout
1
2
3
4
5
6
7
8
@font-face { 
    font-family: "Alex Brush"; 
    src: url("AlexBrush-Regular.ttf"); 
} 
.button { 
    -fx-font-size: 32; 
    -fx-font-family: "Alex Brush"; 
}

Ici, nous avons d�fini une nouvelle famille de polices nomm�e Alex Brush et utilisant le fichier AlexBrush-Regular.ttf. Nous avons indiqu� gr�ce � la fonction url() que le fichier contenant la police est situ� dans le m�me r�pertoire/package que la feuille de style. D�sormais, tous les boutons de notre application verront leur texte affich� en utilisant cette police de caract�res qui est pr�sente dans l'application.

Mis � jour le 29 octobre 2014 bouye

Pour pouvoir sp�cifier une feuille de style par d�faut pour un contr�le personnalis�, votre nouveau contr�le doit h�riter de la classe Region ou d'une des sous-classes. Vous pouvez alors surcharger la m�thode publique getUserAgentStylesheet() pour sp�cifier le nom d'une feuille de style qui servira de feuille de style par d�faut pour votre contr�le. Cette m�thode doit retourner une valeur de type String qui contient une URL ou un chemin relatif depuis la racine de l'application vers un fichier de feuille de style.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
public final class MonControl extends Region { 
  
    public MonControl() { 
        super(); 
        getStyleClass().add("mon-control"); 
    } 
  
    @Override 
    public String getUserAgentStylesheet() { 
        final URL cssURL = getClass().getResource("MonControl.css"); 
        return cssURL.toExternalForm(); 
    } 
}

Ici, nous utilisons l�URL d�acc�s au fichier CSS � l�int�rieur de l�application ou du fichier JAR.

Pla�ons maintenant le fichier CSS associ� MonControl.css dans le m�me package avec le contenu suivant :

Code CSS : S�lectionner tout
1
2
3
4
.mon-control { 
    -fx-background-color: yellow; 
    -fx-background-radius: 25; 
}

Lors de son initialisation, le contr�le ira chercher la feuille de style MonControl.css et la chargera en tant que feuille de style par d�faut ce qui lui donnera son apparence initiale : une surface jaune avec des coins arrondis. Il reste bien s�r ensuite possible de modifier cette apparence via la ou les feuilles de style de la sc�ne ou des n�uds parents, en ajoutant une ou des feuilles de styles secondaires sur ce n�ud via la liste observable styleSheets, via des CSS inline ou encore des propri�t�s qui changeraient son apparence.

Mis � jour le 15 mars 2015 bouye

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 �a


R�ponse � la question

Liens sous la question
pr�c�dent sommaire suivant
 

Les 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.