GUI avec JavaFX

Mise en forme avec le fichier CSS

L'application a pour l'instant un aspect défini par le style "modena" de JavaFX. L'utilisation de CSS (Cascading Style Sheet, feuille de style en cascade) permet de redéfinir complètement cet aspect.

Voici par exemple ce que donne l'aspect de l'application, avec la feuille de style qui suit.

Contenu du fichier "application.css" correspondant :
.root{ /* fond de la scene */
	-fx-background-color:darkkhaki;/* couleur de fond, un peu visible dans les coins sous la VBox et la ButtonBar. darkkhaki est une des nombreuses couleurs prédéfinies  */ 
}

ButtonBar{
  -fx-background-image:url("fond.png");/*le fond est une image */ 
  -fx-border-color:brown;
  -fx-border-width:4 2 1 6; /* épaisseur de la bordure, dans l'ordre haut droite bas gauche */
  -fx-border-radius:10 10 0 0; /* arrondi des coins de la bordure dans l'ordre haut-gauche, haut-droit, bas-droit, bas-gauche  */
  -fx-background-radius:10 10 0 0;   /* arrondi des coins dans l'ordre haut-gauche, haut-droit, bas-droit, bas-gauche */                    
	       }

VBox{
	-fx-background-color:navajowhite;
	-fx-border-color:brown;
	-fx-border-radius:0 0 10 10; 
	-fx-border-width:1 2 4 6;
	-fx-background-radius:0 0 10 10;
}

Button{
	-fx-background-color:rgb(130,30,0);/*couleur désignée par ses composantes rouge, vert, bleu */
	-fx-text-fill:yellow;/*couleur du texte 
	-fx-rotate:-30;/* inclinaison en degrés, compté à partir de l'horizontale dans le sens des aiguilles d'une montre */
	-fx-font-style:italic;
	-fx-font-weight:bold;
	
}

Button:hover{ /*pseudo-classe désignant un bouton sur lequel passe la souris */
	-fx-effect:dropshadow(gaussian,brown,10,0,0,0)/* effet d'ombre */
}


:focused{ /* pseudo-classe s'appliquant à tous les contrôles quand ils ont le focus */  
	-fx-scale-x:1.1; /* agrandit le contrôle horizontalement d'un facteur 1,1 */
	-fx-scale-y:1.1;/* idem verticalement */
}

TextField{
	-fx-alignment:center;
	-fx-cursor:crosshair;/* change la forme du curseur de la souris  */
	-fx-background-radius:25 25 25 25;
	-fx-border-radius:25 25 25 25;
	-fx-border-color:darkkhaki;
	-fx-highlight-fill:darkseagreen;/* couleur de fond du texte sélectionné  */
	-fx-highlight-text-fill:yellow;/* couleur du texte sélectionné*/
}

TextField:focused{ /* pseudo-classe contenant le TextField ayant le focus. Se rajoute à l'effet de grandissement créé précédemment */
	-fx-effect:innershadow(three-pass-box,darkkhaki,15,0,0,0);/* ombrage intérieur */
	
}

TextField.special{/* classe contenant les TextFields dont le nom de StyleClass est "special" dans le fichier fxml . */
	-fx-background-color:gainsboro ;
}


Fichier feuille de style application.css

Pour obtenir exactement le résultat illustré, deux petites modifications doivent être apportées au FXML : la propriété prefHeight de la ButtonBar a été fixée à 70 , pour que les boutons n'en dépassent pas après rotation, et la propriété StyleClass de la deuxième et de la troisième ligne de saisie a été fixée à "special" pour rassembler ces deux lignes dans un ensemble à part de la première. L'image "fond.png" utilisée dans la feuille de style et visible en fond de la ButtonBar doit être placée dans le même dossier "bin" que la feuille de style Echantillon.css.

 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé