JavaFx 2.x : How to draw dashed or dotted lines?

Alberto acepsut picture Alberto acepsut · Oct 8, 2012 · Viewed 19.4k times · Source

I would like to dynamically change the draw of a line from solid, dotted or dashed: it seems I have to use line.setStroke, is it the correct method?

And, how to accomplish this?

Thanks

Answer

Uluk Biy picture Uluk Biy · Oct 8, 2012

No that is not the correct method, setStroke sets the color of the stroke.
Correct method is getStrokeDashArray().add():

Line line1 = new Line(20, 40, 270, 40);
line1.getStrokeDashArray().addAll(25d, 20d, 5d, 20d);

Line line2 = new Line(20, 60, 270, 60);
line2.getStrokeDashArray().addAll(50d, 40d);

Line line3 = new Line(20, 80, 270, 80);
line3.getStrokeDashArray().addAll(25d, 10d);

Line line4 = new Line(20, 100, 270, 100);
line4.getStrokeDashArray().addAll(2d);

Line line5 = new Line(20, 120, 270, 120);
line5.getStrokeDashArray().addAll(2d, 21d);

pane.getChildren().addAll(line1, line2, line3, line4, line5);

StrokeDashArray defines the pattern of line and gap sequences. See the following different patterns as output of aboves:

enter image description here

Of course by manipulating the StrokeDashArray array elements you can change the pattern dynamically.