JavaFX - kolory
Aby zastosować kolory do aplikacji, JavaFX udostępnia w pakiecie różne klasy javafx.scene.paintpakiet. Ten pakiet zawiera klasę abstrakcyjną o nazwie Paint i jest to klasa bazowa wszystkich klas, które są używane do nakładania kolorów.
Korzystając z tych klas, możesz zastosować kolory w następujących wzorach -
Uniform - W tym wzorze kolor jest jednolity w całym węźle.
Image Pattern - Pozwala to wypełnić obszar węzła wzorem obrazu.
Gradient- W tym wzorze kolor zastosowany do węzła zmienia się w zależności od punktu. Ma mianowicie dwa rodzaje gradientówLinear Gradient i Radial Gradient.
Wszystkie te klasy węzłów, do których można zastosować kolor, takie jak Shape, Text (w tym Scene), mają nazwane metody setFill() i setStroke(). Pomogą one odpowiednio ustawić wartości kolorów węzłów i ich pociągnięć.
Te metody akceptują obiekt typu Paint. W związku z tym, aby utworzyć jeden z tych typów obrazów, należy utworzyć wystąpienie tych klas i przekazać obiekt jako parametr do tych metod.
Stosowanie koloru do węzłów
Aby ustawić jednolity wzór koloru dla węzłów, musisz przekazać obiekt o kolorze klasy do pliku setFill(), setStroke() metody w następujący sposób -
//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);
W powyższym bloku kodu używamy zmiennych statycznych klasy koloru do tworzenia obiektu koloru.
W ten sam sposób możesz również użyć wartości RGB lub standardu HSB kolorowania lub kodów skrótów internetowych kolorów, jak pokazano poniżej -
//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);
Przykład
Poniżej znajduje się przykład, który demonstruje, jak zastosować kolor do węzłów w JavaFX. Tutaj tworzymy koło i węzły tekstowe i nakładamy na nie kolory.
Zapisz ten kod w pliku o nazwie 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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
Javac ColorExample.java
java ColorExample
Podczas wykonywania powyższy program generuje okno JavaFX w następujący sposób -
Stosowanie wzoru obrazu do węzłów
Aby zastosować wzór obrazu do węzłów, utwórz wystąpienie ImagePattern klasy i przekaż jej obiekt do setFill(), setStroke() metody.
Konstruktor tej klasy przyjmuje sześć parametrów, a mianowicie -
Image - Obiekt obrazu, za pomocą którego chcesz utworzyć wzór.
x and y - Zmienne podwójne reprezentujące współrzędne (x, y) początku prostokąta kotwicy.
height and width - Zmienne podwójne reprezentujące wysokość i szerokość obrazu używanego do tworzenia wzoru.
isProportional- To jest zmienna logiczna; po ustawieniu tej właściwości na wartość true lokalizacje początkowe i końcowe są ustawiane proporcjonalnie.
ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);
Przykład
Poniżej znajduje się przykład, który demonstruje, jak zastosować wzorzec obrazu do węzłów w JavaFX. Tutaj tworzymy okrąg i węzeł tekstowy i stosujemy do nich wzór obrazu.
Zapisz ten kod w pliku o nazwie 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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
Javac ImagePatternExample.java
java ImagePatternExample
Podczas wykonywania powyższy program generuje okno JavaFX w następujący sposób -
Stosowanie liniowego wzoru gradientu
Aby zastosować liniowy wzór gradientu do węzłów, utwórz wystąpienie LinearGradient klasy i przekaż jej obiekt do setFill(), setStroke() metody.
Konstruktor tej klasy przyjmuje pięć parametrów, a mianowicie -
startX, startY - Te podwójne właściwości reprezentują współrzędne x i y punktu początkowego gradientu.
endX, endY - Te podwójne właściwości reprezentują współrzędne x i y punktu końcowego gradientu.
cycleMethod - Ten argument określa, w jaki sposób powinny być wypełnione obszary poza granicami gradientu kolorów, zdefiniowane przez punkt początkowy i końcowy.
proportional- To jest zmienna logiczna; o ustawieniu tej właściwości natrue, położenie początkowe i końcowe są ustawione w proporcji.
Stops - Ten argument definiuje punkty zatrzymania koloru wzdłuż linii gradientu.
//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);
Przykład
Poniżej znajduje się przykład, który pokazuje, jak zastosować wzorzec gradientu do węzłów w JavaFX. Tutaj tworzymy okrąg i węzły tekstowe i stosujemy do nich liniowy wzór gradientu.
Zapisz ten kod w pliku o nazwie 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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
Javac LinearGradientExample.java
java LinearGradientExample
Podczas wykonywania powyższy program generuje okno JavaFX w następujący sposób -
Stosowanie radialnego wzoru gradientu
Aby zastosować Radial Gradient Pattern do węzłów, utwórz wystąpienie GradientPattern klasy i przekaż jej obiekt do setFill(), setStroke() metody.
Konstruktor tej klasy akceptuje kilka parametrów, z których niektóre to -
startX, startY - Te podwójne właściwości reprezentują współrzędne x i y punktu początkowego gradientu.
endX, endY - Te podwójne właściwości reprezentują współrzędne x i y punktu końcowego gradientu.
cycleMethod - Ten argument określa, w jaki sposób regiony poza granicami gradientu kolorów są definiowane przez punkty początkowe i końcowe oraz jak powinny być wypełnione.
proportional- To jest zmienna logiczna; o ustawieniu tej właściwości natrue lokalizacje początkowe i końcowe są ustawione w proporcji.
Stops - Ten argument definiuje punkty zatrzymania koloru wzdłuż linii gradientu.
//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);
Przykład
Poniżej znajduje się przykład, który pokazuje, jak zastosować wzór gradientu radialnego do węzłów w JavaFX. Tutaj tworzymy okrąg i węzły tekstowe i stosujemy do nich wzór gradientu.
Zapisz ten kod w pliku o nazwie 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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
Javac RadialGradientExample.java
java RadialGradientExample
Podczas wykonywania powyższy program generuje okno JavaFX w następujący sposób -