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 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); } }