The JavaFX Canvas control provides a graphical canvas you can draw graphics on using drawing commands in the form of method calls. The JavaFX Canvas control is very similar in design and function to the HTML5 Canvas, in case you are familiar with that. The JavaFX Canvas control can be used to draw graphics at higher performance than composing graphics using JavaFX 2D shapes attached to the scene graph, so if you need higher performance graphics, the JavaFX Canvas control is the way to go.

JavaFX Canvas Example

Here is a full JavaFX Canvas example, showing the basics of how to use the JavaFX Canvas:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
    
public class CanvasExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        Canvas canvas = new Canvas();
        canvas.setHeight(512);
        canvas.setWidth(512);

        GraphicsContext graphicsContext2D = canvas.getGraphicsContext2D();

        graphicsContext2D.setFill(Color.valueOf("#ff0000"));
        graphicsContext2D.fillRect(100, 100, 200, 200);

        graphicsContext2D.setStroke(Color.valueOf("#0000ff"));
        graphicsContext2D.strokeRect(200, 200, 200, 200);

        VBox vbox = new VBox(canvas);
        Scene scene = new Scene(vbox);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}