스트로크 라인 캡(Stroke Line Cap)은 선의 끝부분, 즉 단면이 어떤 스타일로 마감될지를 지정하는 속성입니다. JavaFX에서는 javafx.scene.shape.Shape 클래스가 제공하는 setStrokeLineCap() 메서드를 사용하여 이 값을 손쉽게 설정할 수 있습니다.
JavaFX는 StrokeLineCap이라는 열거형(Enum)에 정의된 세 가지 상수를 통해 선 끝 스타일을 지원합니다. 각각의 특징은 다음과 같습니다.
- BUTT — 닫히지 않은 하위 경로(subpath)의 끝을 아무런 장식 없이 그대로 잘라냅니다. 기본값으로, 선이 좌표 끝점에서 정확히 멈춥니다.
- ROUND — 닫히지 않은 경로의 끝을 반원(둥근) 형태로 돌출시켜 마감합니다. 부드러운 느낌이 필요한 UI 요소에 적합합니다.
- SQUARE — 닫히지 않은 경로의 끝을 사각형 형태로 돌출시켜 마감합니다. BUTT와 비슷하지만 선 길이가 양쪽 끝으로 선 두께의 절반만큼 더 연장되어 보입니다.
예제 코드
아래 예제는 네 개의 선을 화면에 그린 뒤, 각 선마다 서로 다른 라인 캡 스타일(BUTT, SQUARE, ROUND)을 적용하여 시각적으로 차이를 비교할 수 있도록 구성한 코드입니다.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeType;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class StrokeLineCapExample extends Application {
public void start(Stage stage) {
Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);
Text label1 = new Text("Normal Line");
label1.setFont(font);
label1.setX(260.0);
label1.setY(90.0);
Line line1 = new Line(250.0, 50.0, 350.0, 50.0);
Text label2 = new Text("Line Cap: BUTT");
label2.setFont(font);
label2.setX(50.0);
label2.setY(235.0);
Line line2 = new Line(50.0, 200.0, 150.0, 200.0);
line2.setStroke(Color.DARKBLUE);
line2.setStrokeWidth(10.0);
line2.setStrokeType(StrokeType.CENTERED);
line2.setStrokeLineCap(StrokeLineCap.BUTT);
Text label3 = new Text("Line Cap: SQUARE");
label3.setFont(font);
label3.setX(245.0);
label3.setY(235.0);
Line line3 = new Line(250.0, 200.0, 350.0, 200.0);
line3.setStrokeWidth(10.0);
line3.setStroke(Color.DARKBLUE);
line3.setStrokeLineCap(StrokeLineCap.SQUARE);
Text label4 = new Text("Line Cap: ROUND");
label4.setFont(font);
label4.setX(440.0);
label4.setY(235.0);
Line line4 = new Line(440, 200.0, 540.0, 200.0);
line4.setStrokeWidth(10.0);
line4.setStroke(Color.DARKBLUE);
line4.setStrokeLineCap(StrokeLineCap.ROUND);
// Group 객체 생성
Group root = new Group(label1, label2, label3, label4, line1, line2, line3, line4);
// Scene 객체 생성
Scene scene = new Scene(root, 595, 310);
// Stage 제목 설정
stage.setTitle("Stroke Line Cap Example");
// Stage에 Scene 추가
stage.setScene(scene);
// Stage 표시
stage.show();
}
public static void main(String args[]){
launch(args);
}
}실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 창이 나타납니다.

결과를 보면 일반 선과 달리, SQUARE 캡이 적용된 선은 양쪽 끝이 사각형으로 살짝 연장되고, ROUND 캡이 적용된 선은 끝이 반원처럼 둥글게 처리된 것을 확인할 수 있습니다. 이처럼 라인 캡 속성을 활용하면 선, 경로, 도형 테두리 등의 끝단 스타일을 자유롭게 조절할 수 있습니다.