Menu kontekstowe na JavaFX Canvas możemy utworzyć następująco:

package rozdzial16c;

import javafx.application.Application;
import javafx.geometry.Side;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Listing16_08 extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) {
        try {
            ContextMenu cm = new ContextMenu();
            MenuItem mi1 = new MenuItem("Pomoc");
            mi1.setOnAction(
                    e -> System.out.println("Kliknąłeś przycisk 'Pomoc'"));
            MenuItem mi2 = new MenuItem("O nas");
            mi2.setOnAction(
                    e -> System.out.println("Kliknąłeś przycisk 'O nas'"));
            MenuItem mi3 = new MenuItem("Kontakt");
            mi3.setOnAction(
                    e -> System.out.println("Kliknąłeś przycisk 'Kontakt'"));
            cm.getItems().addAll(mi1, mi2, mi3);
            Group root = new Group();
            Canvas canvas = new Canvas(200, 200);
            GraphicsContext gc = canvas.getGraphicsContext2D();
            gc.setFill(Color.BLUE);
            gc.setGlobalAlpha(0.7);
            gc.fillRect(50, 50, 100, 100);
            canvas.setOnContextMenuRequested(e -> cm.show(canvas, Side.RIGHT, 0,0));
            cm.setOnShown(event -> canvas.setOnMouseClicked(e1 -> cm.hide()));
            cm.setOnHidden(event -> canvas.setOnMouseClicked(null));
            root.getChildren().add(canvas);
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Po uruchomieniu klasy, gdy klikniemy prawym klawiszem myszy w obrębie elemntu canvas zonbaczymy menu kontekstowe ContextMmenu (Rys. 1)

Menu kontekstowe na JavaFX Canvas
Menu kontekstowe na JavaFX Canvas

Menu zniknie po wybraniu jednej z opcji menu albo kliknięciu myszą gdziekolwiek.