JavaFX中,我们可以在对象上应用颜色(Paint)。在JavaFX中,所有形状都可以填充简单的颜色和渐变颜色。

RGB颜色

当指定颜色值时,可以使用默认的RGB颜色空间中的颜色。
要创建颜色,请使用Color.rgb()方法。此方法使用三个整数值,表示红色,绿色和蓝色分量。请阅读以下一段简单的代码 -
RGB对照表:https://tool.oschina.net/commons?type=3

  1. import javafx.application.Application;
  2. import javafx.scene.Group;
  3. import javafx.scene.Scene;
  4. import javafx.scene.paint.Color;
  5. import javafx.scene.text.Text;
  6. import javafx.stage.Stage;
  7. public class Main extends Application {
  8. public static void main(String[] args) {
  9. Application.launch(args);
  10. }
  11. @Override
  12. public void start(Stage primaryStage) {
  13. primaryStage.setTitle("Drawing Text");
  14. Group root = new Group();
  15. Scene scene = new Scene(root, 300, 250, Color.WHITE);
  16. int x = 100;
  17. int y = 100;
  18. int red = 30;
  19. int green = 40;
  20. int blue = 50;
  21. Text text = new Text(x, y, "JavaFX 2.0");
  22. text.setFill(Color.rgb(red, green, blue, .99));
  23. text.setRotate(60);
  24. root.getChildren().add(text);
  25. primaryStage.setScene(scene);
  26. primaryStage.show();
  27. }
  28. }

image.png

颜色名称

以下代码根据颜色名称创建颜色。如:Color.DARKBLUE,请参阅如下代码 -

  1. import javafx.application.Application;
  2. import javafx.scene.Group;
  3. import javafx.scene.Scene;
  4. import javafx.scene.paint.Color;
  5. import javafx.scene.shape.Circle;
  6. import javafx.scene.text.Font;
  7. import javafx.scene.text.Text;
  8. import javafx.stage.Stage;
  9. public class Main extends Application {
  10. public static void main(String[] args) {
  11. Application.launch(args);
  12. }
  13. @Override
  14. public void start(Stage primaryStage) {
  15. primaryStage.setTitle("Title");
  16. final Circle circ = new Circle(40, 40, 30);
  17. final Group root = new Group(circ);
  18. final Scene scene = new Scene(root, 800, 400, Color.BEIGE);
  19. final Text text1 = new Text(25, 25, "test.com");
  20. text1.setFill(Color.DARKBLUE);
  21. text1.setFont(Font.font(java.awt.Font.SERIF, 25));
  22. root.getChildren().add(text1);
  23. primaryStage.setScene(scene);
  24. primaryStage.show();
  25. }
  26. }

image.png

颜色alpha通道

另一个重载方法需要三个整数(int)值和第四个double类型值,即alpha通道。第四个值设置颜色的不透明度。此值介于零(0)和一(1)之间。

  1. import javafx.application.Application;
  2. import javafx.scene.Group;
  3. import javafx.scene.Scene;
  4. import javafx.scene.paint.Color;
  5. import javafx.scene.text.Font;
  6. import javafx.scene.text.Text;
  7. import javafx.stage.Stage;
  8. public class Main extends Application {
  9. public static void main(String[] args) {
  10. Application.launch(args);
  11. }
  12. @Override
  13. public void start(Stage primaryStage) {
  14. primaryStage.setTitle("Text Fonts");
  15. Group root = new Group();
  16. Scene scene = new Scene(root, 550, 250, new Color(0,0,1,1.0));
  17. Text text = new Text(50, 100, "JavaFX 2.0");
  18. Font sanSerif = Font.font("Dialog", 30);
  19. text.setFont(sanSerif);
  20. text.setFill(Color.RED);
  21. root.getChildren().add(text);
  22. primaryStage.setScene(scene);
  23. primaryStage.show();
  24. }
  25. }

image.png

HSB颜色

还可以通过指定色相,饱和度和亮度(HSB)来创建颜色。 要使用HSB创建颜色,请使用Color.hsb()方法。

  1. import javafx.application.Application;
  2. import javafx.scene.Group;
  3. import javafx.scene.Scene;
  4. import javafx.scene.paint.Color;
  5. import javafx.scene.text.Font;
  6. import javafx.scene.text.Text;
  7. import javafx.stage.Stage;
  8. public class Main extends Application {
  9. public static void main(String[] args) {
  10. Application.launch(args);
  11. }
  12. @Override
  13. public void start(Stage primaryStage) {
  14. primaryStage.setTitle("Text Fonts");
  15. Group root = new Group();
  16. Scene scene = new Scene(root, 550, 250,Color.hsb(270,1.0,1.0,1.0));
  17. Text text = new Text(50, 100, "JavaFX 2.0");
  18. Font sanSerif = Font.font("Dialog", 30);
  19. text.setFont(sanSerif);
  20. text.setFill(Color.RED);
  21. root.getChildren().add(text);
  22. primaryStage.setScene(scene);
  23. primaryStage.show();
  24. }
  25. }

image.png

Web颜色

以下代码显示了如何从web值来创建颜色。

  1. Color c = Color.web("#0000FF",1.0);// blue as a hex web value, explict alpha
  2. Color c = Color.web("#0000FF");// blue as a hex web value, implict alpha
  3. Color c = Color.web("0000FF",1.0);// blue as a hex web value, explict alpha
  4. Color c = Color.web("0000FF");// blue as a hex web value, implict alpha
  1. import javafx.application.Application;
  2. import javafx.scene.Group;
  3. import javafx.scene.Scene;
  4. import javafx.scene.control.Label;
  5. import javafx.scene.layout.HBox;
  6. import javafx.scene.paint.Color;
  7. import javafx.stage.Stage;
  8. public class Main extends Application {
  9. public static void main(String[] args) {
  10. launch(args);
  11. }
  12. @Override
  13. public void start(Stage stage) {
  14. Scene scene = new Scene(new Group());
  15. stage.setTitle("Label Sample");
  16. stage.setWidth(400);
  17. stage.setHeight(180);
  18. HBox hbox = new HBox();
  19. Label label1 = new Label("Search");
  20. label1.setTextFill(Color.web("#0076a3"));
  21. hbox.setSpacing(10);
  22. hbox.getChildren().add((label1));
  23. ((Group) scene.getRoot()).getChildren().add(hbox);
  24. stage.setScene(scene);
  25. stage.show();
  26. }
  27. }

image.png