    import javafx.application.Application;
    import javafx.geometry.Insets;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.input.KeyCombination;
    import javafx.scene.input.MouseButton;
    import javafx.scene.layout.BackgroundFill;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.CornerRadii;
    import javafx.scene.layout.VBox;
    import javafx.scene.paint.Color;
    import javafx.scene.paint.CycleMethod;
    import javafx.scene.paint.LinearGradient;
    import javafx.scene.paint.Stop;
    import javafx.scene.shape.Rectangle;
    import javafx.stage.Stage;
     
    public class MenuExample extends Application {
        public static void main(String[] args) {
            launch(args);
        }
     
        private Stage stage = null;
     
        public Menu createFileMenu() {
            Menu fileMenu = new Menu("File");
     
            Image icon = new Image(Example01.class.getResourceAsStream("/images/new.png"));
            MenuItem itemNew = new MenuItem("New...", new ImageView(icon));
            itemNew.setAccelerator(KeyCombination.keyCombination("Ctrl+N"));
            itemNew.setOnAction(event -> System.out.println("New... menu item clicked."));
     
            // create open menu item
            MenuItem itemOpen = new MenuItem("Open...");
            itemOpen.setOnAction(event -> System.out.println("Open... menu item clicked."));
     
            // create exit menu item
            MenuItem itemExit = new MenuItem("Exit");
            itemExit.setAccelerator(KeyCombination.keyCombination("Ctrl+X"));
            itemExit.setOnAction(event -> {
                System.out.println("Exit menu item clicked.");
                // stop the application
                stage.hide();
            });
     
            // add menu items to the menu
            fileMenu.getItems().addAll(
                    itemNew,
                    itemOpen,
                    itemExit
            );
     
            return fileMenu;
        }
     
        public Menu createEditMenu() {
            Menu editMenu = new Menu("Edit");
     
            MenuItem itemCopy = new MenuItem("Copy");
            itemCopy.setOnAction(event -> System.out.println("Copy menu item clicked."));
     
            MenuItem itemCut = new MenuItem("Cut");
            itemCut.setOnAction(event -> System.out.println("Cut menu item clicked."));
     
            // add menu items to the menu
            editMenu.getItems().addAll(
                    itemCopy,
                    itemCut,
                    createPasteMenu()
            );
     
            return editMenu;
        }
     
        public Menu createPasteMenu() {
            Menu pasteMenu = new Menu("Paste as");
     
            MenuItem itemPasteAsText = new MenuItem("Text");
            itemPasteAsText.setOnAction(event -> System.out.println("Paste as Text menu item clicked."));
     
            MenuItem itemPasteAsContent = new MenuItem("Content");
            itemPasteAsContent.setOnAction(event -> System.out.println("Paste as Content menu item clicked."));
     
            MenuItem itemPasteAsFormatting = new MenuItem("Formatting");
            itemPasteAsFormatting.setOnAction(event -> System.out.println("Paste as Formatting menu item clicked."));
     
     
            // add menu items to the menu
            pasteMenu.getItems().addAll(
                    itemPasteAsText,
                    itemPasteAsContent,
                    itemPasteAsFormatting
            );
     
            return pasteMenu;
        }
     
        public MenuBar createMenuBar() {
            MenuBar menuBar = new MenuBar();
     
            menuBar.getMenus().addAll(
                    createFileMenu(),
                    createEditMenu()
            );
     
            return menuBar;
        }
     
        public ContextMenu createContextMenu() {
            ContextMenu contextMenu = new ContextMenu(
                    createFileMenu(),
                    createEditMenu()
            );
     
            return contextMenu;
        }
     
        public Scene createScene() {
            BorderPane bp = new BorderPane();
     
            VBox center = new VBox();
            center.setSpacing(10);
     
            Rectangle rect = createRectangle();
     
            center.getChildren().addAll(
                    createMenuButton(),
                    createSplitMenuButton(),
                    rect
            );
     
            // make the context menu appear when right-click on the center VBox
            ContextMenu contextMenu = createContextMenu();
            rect.setOnMousePressed(event -> {
                if (event.getButton() == MouseButton.SECONDARY) {
                    contextMenu.show(stage, event.getScreenX(), event.getScreenY());
                }
            });
     
            // set the menu bar to the top section, rest in center
            bp.setTop(createMenuBar());
            bp.setCenter(center);
     
            return new Scene(bp, 500, 400);
        }
     
        @Override
        public void start(Stage primaryStage) throws Exception {
            stage = primaryStage;
     
            primaryStage.setTitle("Example 1");
            primaryStage.setScene(createScene());
            primaryStage.show();
        }
    }