JavaFX - Stroke Line Cap Property



A line in geometry is usually one dimensional figure with negligible width that exists in a two dimensional plane. However, like other 2D figures, JavaFX also provides ways to enhance the quality of a line. This includes setting the structure of its edges in a different ways.

The ends of a line are also known as end caps. These end caps are sharp, by default. However, using various properties provided by JavaFX, a user can change the structure of these end caps. This property is known as Stroke Line Cap Property.

Stroke Line Cap Property

The Stroke Line Cap specifies/defines the end cap style of the line. This property is of the type StrokeLineCap and can be set using the method setStrokeLineCap() of javafx.scene.shape.Shape class as shown in the following code block −

line.setStrokeLineCap(StrokeLineCap.SQUARE);

The stroke line cap can be −

  • Butt − The butt line cap is applied at the end of the lines (StrokeLineCap.BUTT).

  • Square − The square line cap is applied at the end of the lines (StrokeLineCap.SQUARE).

  • Round − The round line cap is applied at the end of the lines (StrokeLineCap.ROUND).

By default, the Stroke Line cap a shape is square. Following is the diagram of a triangle with different line cap types.

Stroke Line Cap

Example

Let us see an example demonstrating the usage of Stroke Line Cap property on a rectangle. We do not use this property on shapes with no edges. Save this file with the name StrokeLineCapExample.java.

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

public class StrokeLineCapExample extends Application { 
   @Override 
   public void start(Stage stage) {        
      //Creating a Triangle 
      Rectangle rect = new Rectangle(50.0, 50.0, 200.0, 70.0);  

      rect.setFill(Color.BLUE);
      rect.setStroke(Color.BLACK);
      rect.setStrokeWidth(7.0);
      rect.setStrokeLineCap(StrokeLineCap.BUTT);

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

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

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

      //Adding scene to the stage 
      stage.setScene(scene); 

      //Displaying the contents of the stage 
      stage.show(); 
   } 
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compile and execute the saved java file from the command prompt using the following commands.

javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeLineCapExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeLineCapExample

Output

On executing, the above program generates a JavaFX window displaying a rectangle with butt type stroke line cap as shown below.

Stroke Line Cap Output

Note that this property is only applied on line shapes. If it is used on curved shapes, the results may not show any difference.

Advertisements