Download source from GrowLine.jar
GrowLine.javaimport 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