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

时间:2016-12-08 19:10:25

标签: javafx contextmenu scenebuilder

我正在尝试通过JavaFX,但仍然有许多 - 可能是愚蠢的 - 初学者问题。

我当天的问题如下:

我在“场景构建器”和“控制器”中创建了一个FlowPane,我想要添加一个右键单击选项,打开一个上下文菜单。

通过场景构建器,我添加了OnContextMenuRequested函数,并在Controller中定义了它。

要检查,我已在功能中添加了打印推荐和对话框,效果很好。

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

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

提前致谢...

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(????) 

    }

1 个答案:

答案 0 :(得分:3)

除非你有控件,否则你需要手动显示ContextMenu""使用ContextMenu中定义的方法之一:

// contextMenu.setX(10.0);
// contextMenu.setY(10.0);

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