26 October 2020

This code shows how to handle various mouse events.


/**************************************************
*   Author: Morrison
*   Date:  26 Oct 202020
**************************************************/

import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;


public class MouseDemo extends Application
{
    private Canvas canvas;
    private Stage primary;
    public MouseDemo()
    {
        canvas = new Canvas(800,600);
    }
    
    @Override
    public void init()
    {
    }

    @Override
    public void start(Stage primary)
    {
        this.primary = primary;
        GraphicsContext pen = canvas.getGraphicsContext2D();
        pen.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
        mouseifyCanvas();
        BorderPane bp = new BorderPane();
        bp.setCenter(canvas);
        primary.setScene(new Scene(bp));
        primary.show();
    }
    public void mouseifyCanvas()
    {
        GraphicsContext pen = canvas.getGraphicsContext2D();
        canvas.setOnMouseEntered( e ->
        {
            pen.setFill(Color.YELLOW);
            pen.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
        });
        canvas.setOnMouseExited( e ->
        {
            pen.setFill(Color.BLACK);
            pen.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
        });
        canvas.setOnMouseClicked( e ->
        {
          pen.setFill(Color.BLUE);
          pen.fillRect(0,0,canvas.getWidth(),canvas.getHeight());
        });
        canvas.setOnMousePressed( e ->
        {
          pen.setFill(Color.RED);
          pen.fillRect(0,0,canvas.getWidth(),canvas.getHeight());
        });
        canvas.setOnMouseReleased(e ->
      {
        pen.setFill(Color.GREEN);
        pen.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
      });
    }

    @Override
    public void stop()
    {
    }
}

This sticks a square of size 100X100 wherever the canvas is clicked.


/**************************************************
*   Author: Morrison
*   Date:  26 Oct 202020
**************************************************/

import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.BorderPane;

public class Coordinated extends Application
{
    private Stage primary;
    private Canvas canvas;
    private GraphicsContext pen;
    public Coordinated()
    {
        canvas = new Canvas(800,600);
        pen = canvas.getGraphicsContext2D();
    }
    
    @Override
    public void init()
    {
    }

    @Override
    public void start(Stage primary)
    {
        this.primary = primary;
        BorderPane bp = new BorderPane();
        bp.setCenter(canvas);
        pen.fillRect(700,0,100,100);
        pen.fillRect(0,0,100,100);
        pen.fillRect(0,500,100,100);
        canvas.setOnMouseClicked( e ->
        {
            pen.fillRect(e.getX() - 50, e.getY() - 50, 100, 100);
        });
        primary.setScene(new Scene(bp));
        primary.show();
    }

    @Override
    public void stop()
    {
    }
}