JavaFX - Colori
Per applicare i colori a un'applicazione, JavaFX fornisce varie classi nel pacchetto javafx.scene.paintpacchetto. Questo pacchetto contiene una classe astratta denominata Paint ed è la classe base di tutte le classi utilizzate per applicare i colori.
Usando queste classi, puoi applicare i colori nei seguenti modelli:
Uniform - In questo modello, il colore viene applicato uniformemente su tutto il nodo.
Image Pattern - Ciò consente di riempire la regione del nodo con un motivo di immagine.
Gradient- In questo motivo, il colore applicato al nodo varia da un punto all'altro. Ha due tipi di gradienti, vale a direLinear Gradient e Radial Gradient.
Tutte quelle classi di nodi a cui puoi applicare il colore come Shape, Text (inclusa la scena), hanno metodi denominati setFill() e setStroke(). Questi aiuteranno a impostare i valori di colore dei nodi e dei loro tratti rispettivamente.
Questi metodi accettano un oggetto di tipo Paint. Pertanto, per creare uno di questi tipi di immagini, è necessario creare un'istanza di queste classi e passare l'oggetto come parametro a questi metodi.
Applicazione del colore ai nodi
Per impostare un modello di colore uniforme per i nodi, è necessario passare un oggetto del colore della classe al file setFill(), setStroke() metodi come segue -
//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);
Nel blocco di codice sopra, stiamo usando le variabili statiche della classe color per creare un oggetto color.
Allo stesso modo, puoi anche utilizzare i valori RGB o lo standard HSB di colorazione o codici hash web dei colori come mostrato di seguito -
//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);
Esempio
Di seguito è riportato un esempio che dimostra come applicare il colore ai nodi in JavaFX. Qui, stiamo creando un cerchio e nodi di testo e applicandovi i colori.
Salva questo codice in un file con il nome 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);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
Javac ColorExample.java
java ColorExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come segue:
Applicazione di pattern immagine ai nodi
Per applicare un modello di immagine ai nodi, creare un'istanza del file ImagePattern class e passa il suo oggetto al file setFill(), setStroke() metodi.
Il costruttore di questa classe accetta sei parametri, vale a dire:
Image - L'oggetto dell'immagine utilizzando il quale si desidera creare il motivo.
x and y - Variabili doppie che rappresentano le coordinate (x, y) di origine del rettangolo di ancoraggio.
height and width - Variabili doppie che rappresentano l'altezza e la larghezza dell'immagine utilizzata per creare un motivo.
isProportional- Questa è una variabile booleana; impostando questa proprietà su true, le posizioni di inizio e fine sono impostate in modo proporzionale.
ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);
Esempio
Di seguito è riportato un esempio che dimostra come applicare il modello di immagine ai nodi in JavaFX. Qui creiamo un cerchio e un nodo di testo e applichiamo loro un modello di immagine.
Salva questo codice in un file con nome 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);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
Javac ImagePatternExample.java
java ImagePatternExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come segue:
Applicazione di un motivo sfumato lineare
Per applicare un modello a gradiente lineare ai nodi, creare un'istanza del file LinearGradient class e passa il suo oggetto al file setFill(), setStroke() metodi.
Il costruttore di questa classe accetta cinque parametri, ovvero:
startX, startY - Queste doppie proprietà rappresentano le coordinate xey del punto iniziale del gradiente.
endX, endY - Queste doppie proprietà rappresentano le coordinate xey del punto finale del gradiente.
cycleMethod - Questo argomento definisce come devono essere riempite le regioni al di fuori dei limiti del gradiente di colore, definiti dai punti iniziale e finale.
proportional- Questa è una variabile booleana; sull'impostazione di questa proprietà sutrue, le posizioni di inizio e fine sono impostate su una proporzione.
Stops - Questo argomento definisce i punti di interruzione del colore lungo la linea del gradiente.
//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);
Esempio
Di seguito è riportato un esempio che dimostra come applicare un motivo a gradiente ai nodi in JavaFX. Qui, stiamo creando un cerchio e un nodo di testo e applicando loro un motivo a gradiente lineare.
Salva questo codice in un file con nome 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);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
Javac LinearGradientExample.java
java LinearGradientExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come segue:
Applicazione di un motivo sfumato radiale
Per applicare un motivo sfumato radiale ai nodi, creare un'istanza del file GradientPattern class e passa il suo oggetto al file setFill(), setStroke() metodi.
Il costruttore di questa classe accetta alcuni parametri, alcuni dei quali sono:
startX, startY - Queste doppie proprietà rappresentano le coordinate xey del punto iniziale del gradiente.
endX, endY - Queste doppie proprietà rappresentano le coordinate xey del punto finale del gradiente.
cycleMethod - Questo argomento definisce come le regioni al di fuori dei limiti del gradiente di colore sono definite dai punti iniziale e finale e come devono essere riempite.
proportional- Questa è una variabile booleana; sull'impostazione di questa proprietà sutrue le posizioni di inizio e fine sono impostate su una proporzione.
Stops - Questo argomento definisce i punti di interruzione del colore lungo la linea del gradiente.
//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);
Esempio
Di seguito è riportato un esempio che dimostra come applicare un modello di gradiente radiale ai nodi in JavaFX. Qui, stiamo creando un cerchio e un nodo di testo e applicando loro un motivo sfumato.
Salva questo codice in un file con il nome 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);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
Javac RadialGradientExample.java
java RadialGradientExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come segue: