import java.util.ArrayList;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.stage.Stage;
import javafx.scene.input.MouseEvent;

public class MouseDraw extends Application {
    private ArrayList<double[]> points = new ArrayList<>();;
    private Canvas canvas;
    public void start(Stage stage) {
        stage.setTitle("Hello");

        canvas = new Canvas(150, 150);
        GraphicsContext gc = canvas.getGraphicsContext2D();
        paint(gc);
        canvas.setOnMouseClicked(e -> mouseClicked(e));

        Group root = new Group();
        root.getChildren().addAll(canvas);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    private void paint(GraphicsContext gc) {
        gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());

        int i, n = points.size();
        for (i = 1; i < n; i++) {
            double[] p0 = points.get(i - 1);
            double[] p1 = points.get(i);
            gc.strokeLine(p0[0], p0[1], p1[0], p1[1]);
        }
    }

    private void mouseClicked(MouseEvent e) {
        points.add(new double[] { e.getX(), e.getY() });
        paint(canvas.getGraphicsContext2D());
        return;
    }

    public static void main(String... args) {
        launch(args);
    }
}
