Javafx 简明教程

JavaFX - Stroke Fill Property

JavaFX 应用程序支持显示不同的内容,例如文本、2D 形状、3D 形状等;并且每个对象都有一个默认设置以创建一个基本应用程序。因此,在 JavaFX 应用程序上绘制 2D 形状时,每个形状也有一些默认设置,可以在单独设置时修改这些设置。例如,2D 形状中的默认填充颜色始终为黑色。

引入了各种属性以改善这些形状的质量;并且在前面的章节中,我们已经学习了如何更改形状边界的尺寸和位置。在本节中,我们学习如何将特定 2D 形状的默认颜色黑色更改为其他颜色。

Stroke Fill Property

JavaFX 2D 形状中的描边填充属性用于指定要用来填充形状的颜色。此属性属于 javafx.scene.paint 包。你可以使用如下方法 setFill() 设置形状的填充色 −

path.setFill(COLOR.BLUE);

默认情况下,描边颜色的值为 BLACK 。以下是具有不同颜色的三角形的图表。

stroke fill

Example

在本例中,我们将尝试创建两个 2D 圆,并用黄色填充其中一个圆圈,另一个将保持其默认颜色。目的在于观察两个形状之间的差异。使用名称 StrokeFillExample.java 保存此文件。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Shape;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class StrokeFillExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a Circle
      Circle circle1 = new Circle(200.0f, 150.0f, 50.0f);
      Circle circle2 = new Circle(100.0f, 150.0f, 50.0f);

      circle1.setFill(Color.YELLOW);

      //Creating a Group object
      Group root = new Group();
      root.getChildren().addAll(circle1, circle2);

      //Creating a scene object
      Scene scene = new Scene(root, 300, 300);

      //Setting title to the Stage
      stage.setTitle("Colouring a Circle");

      //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 --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeFillExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeFillExample

Output

在执行时,上面的程序会生成一个 JavaFX 窗口,该窗口显示两个圆,左侧的一个具有其默认填充,而另一个为黄色,如下所示。

stroke fill output

Example

在前面的示例中,我们创建了两个简单的 2D 形状,但是你也可以使用路径元素创建的复杂形状设置填充颜色。

在本例中,我们尝试使用 SVG 路径的线命令创建的复杂形状填充颜色。使用名称 StrokeFillSVGPath.java 保存此文件。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.stage.Stage;

public class StrokeFillSVGPath extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a SVGPath object
      SVGPath svgPath = new SVGPath();

      String path = "M 100 100 H 190 V 190 H 150 L 200 200";

      //Setting the SVGPath in the form of string
      svgPath.setContent(path);

      // Setting the stroke and fill of the path
      svgPath.setStroke(Color.BLACK);
      svgPath.setFill(Color.BLUE);

      //Creating a Group object
      Group root = new Group(svgPath);

      //Creating a scene object
      Scene scene = new Scene(root, 300, 300);

      //Setting title to the Stage
      stage.setTitle("Drawing a Line");

      //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 --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeFillSVGPath.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeFillSVGPath

Output

在执行时,上面的程序会生成一个 JavaFX 窗口,该窗口显示两个圆,左侧的一个具有其默认填充,而另一个为黄色,如下所示。

strokefill svgpath