Чтобы применить цвета к приложению, JavaFX предоставляет различные классы в пакете javafx.scene.paint package. Этот пакет содержит абстрактный класс с именем Paint и является базовым классом всех классов, которые используются для применения цветов.
Используя эти классы, вы можете применять цвета в следующих шаблонах —
-
Равномерный — в этом шаблоне цвет применяется равномерно по всему узлу.
-
Образец изображения — позволяет заполнить область узла узором изображения.
-
Градиент — в этом шаблоне цвет, применяемый к узлу, варьируется от одной точки к другой. Он имеет два вида градиентов, а именно линейный градиент и радиальный градиент .
Равномерный — в этом шаблоне цвет применяется равномерно по всему узлу.
Образец изображения — позволяет заполнить область узла узором изображения.
Градиент — в этом шаблоне цвет, применяемый к узлу, варьируется от одной точки к другой. Он имеет два вида градиентов, а именно линейный градиент и радиальный градиент .
Все те классы узлов, к которым вы можете применить цвет, такие как Shape, Text (включая Scene), имеют методы с именами setFill () и setStroke () . Это поможет установить значения цвета узлов и их штрихов соответственно.
Эти методы принимают объект типа Paint. Поэтому, чтобы создать любой из этих типов изображений, вам нужно создать экземпляры этих классов и передать объект в качестве параметра этим методам.
Применение цвета к узлам
Чтобы установить однородный образец цвета для узлов, вам необходимо передать объект класса color в методы setFill () , setStroke () следующим образом:
//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);
В приведенном выше блоке кода мы используем статические переменные класса color для создания цветового объекта.
Таким же образом вы также можете использовать значения RGB или стандарт цвета раскраски HSB или веб-хэш-коды цветов, как показано ниже —
//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);
пример
Ниже приведен пример, который демонстрирует, как применить цвет к узлам в JavaFX. Здесь мы создаем круги и текстовые узлы и применяем к ним цвета.
Сохраните этот код в файле с именем 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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.
Javac ColorExample.java java ColorExample
При выполнении вышеупомянутая программа генерирует окно JavaFX следующим образом:
Применение шаблона изображения к узлам
Чтобы применить шаблон изображения к узлам, создайте экземпляр класса ImagePattern и передайте его объект методам setFill () , setStroke () .
Конструктор этого класса принимает шесть параметров, а именно —
-
Изображение — объект изображения, с помощью которого вы хотите создать шаблон.
-
x и y — двойные переменные, представляющие (x, y) координаты начала прямоугольника привязки.
-
высота и ширина — двойные переменные, представляющие высоту и ширину изображения, которое используется для создания шаблона.
-
isProportional — это булева переменная; при установке этого свойства в true, начальное и конечное местоположения устанавливаются пропорциональными.
Изображение — объект изображения, с помощью которого вы хотите создать шаблон.
x и y — двойные переменные, представляющие (x, y) координаты начала прямоугольника привязки.
высота и ширина — двойные переменные, представляющие высоту и ширину изображения, которое используется для создания шаблона.
isProportional — это булева переменная; при установке этого свойства в true, начальное и конечное местоположения устанавливаются пропорциональными.
ImagePattern radialGradient = new ImagePattern(dots, 20, 20, 40, 40, false);
пример
Ниже приведен пример, который демонстрирует, как применить шаблон изображения к узлам в JavaFX. Здесь мы создаем круг и текстовый узел и применяем к ним рисунок изображения.
Сохраните этот код в файле с именем 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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.
Javac ImagePatternExample.java java ImagePatternExample
При выполнении вышеупомянутая программа генерирует окно JavaFX следующим образом:
Применение линейного градиента
Чтобы применить шаблон линейного градиента к узлам, создайте экземпляр класса LinearGradient и передайте его объект методам setFill (), setStroke () .
Конструктор этого класса принимает пять параметров, а именно —
-
startX, startY — эти двойные свойства представляют координаты x и y начальной точки градиента.
-
endX, endY — Эти двойные свойства представляют координаты x и y конечной точки градиента.
-
cycleMethod — этот аргумент определяет, как области за пределами границ цветового градиента, определенные начальной и конечной точками, должны быть заполнены.
-
пропорциональный — это булева переменная; при установке для этого свойства значения true начальное и конечное местоположения устанавливаются пропорционально.
-
Остановки — этот аргумент определяет точки остановки цвета вдоль линии градиента.
startX, startY — эти двойные свойства представляют координаты x и y начальной точки градиента.
endX, endY — Эти двойные свойства представляют координаты x и y конечной точки градиента.
cycleMethod — этот аргумент определяет, как области за пределами границ цветового градиента, определенные начальной и конечной точками, должны быть заполнены.
пропорциональный — это булева переменная; при установке для этого свойства значения true начальное и конечное местоположения устанавливаются пропорционально.
Остановки — этот аргумент определяет точки остановки цвета вдоль линии градиента.
//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);
пример
Ниже приведен пример, который демонстрирует, как применить шаблон градиента к узлам в JavaFX. Здесь мы создаем окружность и текстовые узлы и применяем к ним шаблон линейного градиента.
Сохраните этот код в файле с именем 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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.
Javac LinearGradientExample.java java LinearGradientExample
При выполнении вышеупомянутая программа генерирует окно JavaFX следующим образом:
Применение радиального градиента
Чтобы применить шаблон Radial Gradient Pattern к узлам, создайте экземпляр класса GradientPattern и передайте его объект методам setFill (), setStroke () .
Конструктор этого класса принимает несколько параметров, некоторые из которых —
-
startX, startY — эти двойные свойства представляют координаты x и y начальной точки градиента.
-
endX, endY — Эти двойные свойства представляют координаты x и y конечной точки градиента.
-
cycleMethod — этот аргумент определяет, как области за пределами градиента цвета определяются начальной и конечной точками и как они должны быть заполнены.
-
пропорциональный — это булева переменная; при установке этого свойства в true, начальное и конечное местоположения устанавливаются в пропорции.
-
Остановки — этот аргумент определяет точки остановки цвета вдоль линии градиента.
startX, startY — эти двойные свойства представляют координаты x и y начальной точки градиента.
endX, endY — Эти двойные свойства представляют координаты x и y конечной точки градиента.
cycleMethod — этот аргумент определяет, как области за пределами градиента цвета определяются начальной и конечной точками и как они должны быть заполнены.
пропорциональный — это булева переменная; при установке этого свойства в true, начальное и конечное местоположения устанавливаются в пропорции.
Остановки — этот аргумент определяет точки остановки цвета вдоль линии градиента.
//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);
пример
Ниже приведен пример, который демонстрирует, как применить шаблон радиального градиента к узлам в JavaFX. Здесь мы создаем круг и текстовые узлы и применяем к ним градиентный узор.
Сохраните этот код в файле с именем 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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.
Javac RadialGradientExample.java java RadialGradientExample
При выполнении вышеупомянутая программа генерирует окно JavaFX следующим образом: