Download source from GrowLine.jar
GrowLine.java
import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Group; //import javafx.scene.Cursor; import javafx.scene.*; import javafx.event.EventHandler; import javafx.scene.paint.*; import javafx.scene.shape.*; import javafx.collections.*; import javafx.geometry.Point2D; import javafx.geometry.Bounds; import javafx.scene.input.* ; import javafx.scene.layout.Pane; import java.lang.Math; import javafx.scene.control.Button; import javafx.event.ActionEvent; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import java.util.ArrayList; public class GrowLine extends Application { Group grp = new Group(); Line line = null; public void start(Stage stage) { // Create a border pane BorderPane pane = new BorderPane(); Scene scene = new Scene(pane, 400, 400); Pane mypane = new Pane(); pane.setCenter(mypane); mypane.getChildren().add(grp); grp.setTranslateX(scene.getWidth()/2); grp.setTranslateY(scene.getHeight()/2); double res = 96; grp.setScaleX(res); grp.setScaleY(res); Grid.draw(grp); grp.setOnMousePressed( e -> { //System.out.println("event type " + e.getEventType()); //System.out.println("Local " + e.getX() + " " + e.getY()); double x = e.getX(); double y = e.getY(); line = new Line(x,y,x,y); line.setStrokeWidth(2/res); line.setStrokeLineCap(StrokeLineCap.ROUND); grp.getChildren().add(line); } ); grp.setOnMouseDragged( e -> { line.setEndX(e.getX()); line.setEndY(e.getY()); } ); stage.setTitle("GrowLine"); stage.setScene(scene); stage.show(); } }
Maintained by John Loomis, updated Mon Mar 05 12:17:06 2018