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()
{
}
}