JavaFx 从控制器添加上下文菜单

JavaFx add context menu from controller

我正在尝试通过 JavaFX,但仍然有很多(可能很愚蠢)初学者问题。

我今天的问题如下:

我正在场景生成器和控制器中创建一个 FlowPane,我想在其中添加一个右键单击选项,它会打开一个上下文菜单。

通过场景生成器,我添加了函数 OnContextMenuRequested 并将其定义在控制器中。

为了检查,我在函数中添加了一个打印命令和一个对话框,效果很好。

然而,上下文菜单不起作用..

任何人都可以帮助并告诉我我错过了什么???

提前致谢...

public void contextMenu(ContextMenuEvent contextMenuEvent) {


    // working fine ..

    Alert alert = new Alert(Alert.AlertType.INFORMATION);
    alert.setTitle("Information");
    alert.setHeaderText("Look");
    alert.setContentText("Message");
    alert.showAndWait();



    // working fine 

    System.out.println("Hello");


    // Context Menu ......... not working 

    ContextMenu contextMenu = new ContextMenu();
    MenuItem quit = new MenuItem("quit");
    MenuItem hello = new MenuItem("hello");
    contextMenu.getItems().addAll(quit, hello);
    contextMenu.setX(10.0);
    contextMenu.setY(10.0);
    contextMenu.show();

    ????.setContextMenu(????) 

    }

除非您有控件,否则您需要使用 ContextMenu:

中定义的方法之一来显示 ContextMenu "manually"
// contextMenu.setX(10.0);
// contextMenu.setY(10.0);

contextMenu.show((Node) contextMenuEvent.getSource(), contextMenuEvent.getScreenX(), contextMenuEvent.getScreenY());