JavaFX - Couleurs

Pour appliquer des couleurs à une application, JavaFX fournit différentes classes dans le package javafx.scene.paintpaquet. Ce package contient une classe abstraite nommée Paint et c'est la classe de base de toutes les classes utilisées pour appliquer des couleurs.

En utilisant ces classes, vous pouvez appliquer des couleurs dans les modèles suivants -

  • Uniform - Dans ce modèle, la couleur est appliquée uniformément sur tout le nœud.

  • Image Pattern - Cela vous permet de remplir la région du nœud avec un motif d'image.

  • Gradient- Dans ce motif, la couleur appliquée au nœud varie d'un point à l'autre. Il a deux types de dégradés à savoirLinear Gradient et Radial Gradient.

Toutes ces classes de nœuds auxquelles vous pouvez appliquer des couleurs telles que Shape, Text (y compris Scene), ont des méthodes nommées setFill() et setStroke(). Celles-ci aideront à définir respectivement les valeurs de couleur des nœuds et leurs traits.

Ces méthodes acceptent un objet de type Paint. Par conséquent, pour créer l'un ou l'autre de ces types d'images, vous devez instancier ces classes et transmettre l'objet en tant que paramètre à ces méthodes.

Application de couleur aux nœuds

Pour définir un motif de couleur uniforme sur les nœuds, vous devez transmettre un objet de la couleur de classe au setFill(), setStroke() méthodes comme suit -

//Setting color to the text 
Color color = new Color.BEIGE 
text.setFill(color); 

//Setting color to the stroke 
Color color = new Color.DARKSLATEBLUE 
circle.setStroke(color);

Dans le bloc de code ci-dessus, nous utilisons les variables statiques de la classe color pour créer un objet couleur.

De la même manière, vous pouvez également utiliser les valeurs RVB ou la norme HSB de coloration ou les codes de hachage Web des couleurs comme indiqué ci-dessous -

//creating color object by passing RGB values 
Color c = Color.rgb(0,0,255);   

//creating color object by passing HSB values
Color c = Color.hsb(270,1.0,1.0);  

//creating color object by passing the hash code for web 
Color c = Color.web("0x0000FF",1.0);

Exemple

Voici un exemple qui montre comment appliquer une couleur aux nœuds dans JavaFX. Ici, nous créons un cercle et des nœuds de texte et leur appliquons des couleurs.

Enregistrez ce code dans un fichier avec le nom ColorExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class ColorExample extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
       
      //Setting color to the circle 
      circle.setFill(Color.DARKRED);    
      
      //Setting the stroke width 
      circle.setStrokeWidth(3); 
      
      //Setting color to the stroke  
      circle.setStroke(Color.DARKSLATEBLUE);
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text 
      text.setX(155); 
      text.setY(50); 
       
      //Setting color to the text 
      text.setFill(Color.BEIGE); 
      text.setStrokeWidth(2); 
      text.setStroke(Color.DARKSLATEBLUE); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Color Example"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   } 
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

Javac ColorExample.java 
java ColorExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme suit -

Application d'un motif d'image aux nœuds

Pour appliquer un modèle d'image aux nœuds, instanciez le ImagePattern class et passez son objet au setFill(), setStroke() méthodes.

Le constructeur de cette classe accepte six paramètres à savoir -

  • Image - L'objet de l'image à l'aide duquel vous souhaitez créer le motif.

  • x and y - Variables doubles représentant les coordonnées (x, y) d'origine du rectangle d'ancrage.

  • height and width - Variables doubles représentant la hauteur et la largeur de l'image utilisée pour créer un motif.

  • isProportional- Ceci est une variable booléenne; en définissant cette propriété sur true, les emplacements de début et de fin sont définis pour être proportionnels.

ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);

Exemple

Voici un exemple qui montre comment appliquer un modèle d'image aux nœuds dans JavaFX. Ici, nous créons un cercle et un nœud de texte et leur appliquons un motif d'image.

Enregistrez ce code dans un fichier avec un nom ImagePatternExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.ImagePattern; 
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class ImagePatternExample extends Application { 
   @Override 
   public void start(Stage stage) {           
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
       
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text
      text.setX(155); 
      text.setY(50); 
       
      //Setting the image pattern 
      String link = "https://encrypted-tbn1.gstatic.com" 
         + "/images?q=tbn:ANd9GcRQub4GvEezKMsiIf67U" 
         + "rOxSzQuQ9zl5ysnjRn87VOC8tAdgmAJjcwZ2qM";       
      
      Image image = new Image(link); 
      ImagePattern radialGradient = new ImagePattern(image, 20, 20, 40, 40, false); 
       
      //Setting the linear gradient to the circle and text 
      circle.setFill(radialGradient); 
      text.setFill(radialGradient); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Image pattern Example"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   } 
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

Javac ImagePatternExample.java 
java ImagePatternExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme suit -

Application d'un motif de dégradé linéaire

Pour appliquer un motif de dégradé linéaire aux nœuds, instanciez le LinearGradient class et passez son objet au setFill(), setStroke() méthodes.

Le constructeur de cette classe accepte cinq paramètres à savoir -

  • startX, startY - Ces propriétés doubles représentent les coordonnées x et y du point de départ du dégradé.

  • endX, endY - Ces propriétés doubles représentent les coordonnées x et y du point d'arrivée du dégradé.

  • cycleMethod - Cet argument définit comment les régions en dehors des limites du dégradé de couleur, définies par les points de départ et d'arrivée, doivent être remplies.

  • proportional- Ceci est une variable booléenne; en définissant cette propriété surtrue, les emplacements de début et de fin sont définis selon une proportion.

  • Stops - Cet argument définit les points d'arrêt de couleur le long de la ligne de dégradé.

//Setting the linear gradient 
Stop[] stops = new Stop[] { 
   new Stop(0, Color.DARKSLATEBLUE),  
   new Stop(1, Color.DARKRED)
};  
LinearGradient linearGradient = 
   new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);

Exemple

Voici un exemple qui montre comment appliquer un motif de dégradé aux nœuds dans JavaFX. Ici, nous créons un cercle et des nœuds de texte et leur appliquons un motif de dégradé linéaire.

Enregistrez ce code dans un fichier avec un nom LinearGradientExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.LinearGradient; 
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text; 
         
public class LinearGradientExample extends Application { 
   @Override 
   public void start(Stage stage) {           
      //Drawing a Circle 
      Circle circle = new Circle();    
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f);  
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f); 
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 55)); 
      
      //Setting the position of the text 
      text.setX(140); 
      text.setY(50); 
       
      //Setting the linear gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0, Color.DARKSLATEBLUE),  
         new Stop(1, Color.DARKRED)
      };  
      LinearGradient linearGradient = 
         new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops); 
       
      //Setting the linear gradient to the circle and text 
      circle.setFill(linearGradient); 
      text.setFill(linearGradient); 
         
      //Creating a Group object  
      Group root = new Group(circle, text); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Linear Gradient Example"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

Javac LinearGradientExample.java 
java LinearGradientExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme suit -

Application d'un motif de dégradé radial

Pour appliquer un motif de dégradé radial aux nœuds, instanciez le GradientPattern class et passez son objet au setFill(), setStroke() méthodes.

Le constructeur de cette classe accepte quelques paramètres, dont certains sont -

  • startX, startY - Ces propriétés doubles représentent les coordonnées x et y du point de départ du dégradé.

  • endX, endY - Ces propriétés doubles représentent les coordonnées x et y du point d'arrivée du dégradé.

  • cycleMethod - Cet argument définit comment les régions en dehors des limites du dégradé de couleur sont définies par les points de départ et de fin et comment elles doivent être remplies.

  • proportional- Ceci est une variable booléenne; en définissant cette propriété surtrue les emplacements de début et de fin sont définis selon une proportion.

  • Stops - Cet argument définit les points d'arrêt de couleur le long de la ligne de dégradé.

//Setting the radial gradient 
Stop[] stops = new Stop[] { 
   new Stop(0.0, Color.WHITE),  
   new Stop(0.3, Color.RED), 
   new Stop(1.0, Color.DARKRED) 
};        

RadialGradient radialGradient = 
   new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);

Exemple

Voici un exemple qui montre comment appliquer un motif de dégradé radial aux nœuds dans JavaFX. Ici, nous créons un cercle et un nœud de texte et leur appliquons un motif de dégradé.

Enregistrez ce code dans un fichier avec le nom RadialGradientExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.RadialGradient;  
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text;   

public class RadialGradientExample extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle(); 
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f);  
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text 
      text.setX(155); 
      text.setY(50);  
      
      //Setting the radial gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0.0, Color.WHITE),  
         new Stop(0.3, Color.RED), 
         new Stop(1.0, Color.DARKRED) 
      };        
      RadialGradient radialGradient = 
         new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);  
      
      //Setting the radial gradient to the circle and text 
      circle.setFill(radialGradient); 
      text.setFill(radialGradient);  
      
      //Creating a Group object  
      Group root = new Group(circle, text);  
      
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300); 
      
      //Setting title to the Stage 
      stage.setTitle("Radial Gradient Example");  
      
      //Adding scene to the stage 
      stage.setScene(scene);  
      
      //Displaying the contents of the stage 
      stage.show(); 
   }
   public static void main(String args[]) { 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

Javac RadialGradientExample.java 
java RadialGradientExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX comme suit -