Учебники

JavaFX — Цвета

Чтобы применить цвета к приложению, 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 следующим образом: