【问题标题】:How do i show a context menu when right click on a Pane or an ImageView in javaFX在javaFX中右键单击窗格或ImageView时如何显示上下文菜单
【发布时间】:2016-12-17 14:48:10
【问题描述】:

当我右键单击窗格或图像视图((在请求的上下文菜单上))时,我试图显示我创建的上下文菜单。问题是他们似乎没有 setContextMenue 方法,不像标签和按钮......等。如何将上下文菜单关联到似乎不接受上下文菜单的节点?

@FXML
Button button1, button2;

@FXML
Pane mainPane;

@FXML
ImageView image;
private void initContextMenu() {
    final ContextMenu contextMenu = new ContextMenu();
    final MenuItem item1 = new MenuItem("open a file");
    final MenuItem item2 = new MenuItem("quit");

    contextMenu.getItems().addAll(item1, item2);

    // not possible
    image.setContextMenu(contextMenu);
    // possible
    button1.setContextMenu(contextMenu)

【问题讨论】:

    标签: java javafx javafx-2 javafx-8


    【解决方案1】:

    你可以的

    image.setOnContextMenuRequested(e -> 
        contextMenu.show(image, e.getScreenX(), e.getScreenY()));
    

    【讨论】:

    • 我试过 -> contextMenu.show(imgWidnow.getScene().getWindow() 并且它运行正常,但现在菜单的位置固定在窗口中间。
    • 我实际上是这样解决的。谢谢你 imgWidnow.setOnContextMenuRequested(event -> { contextMenu.setY(event.getScreenY()); contextMenu.setX(event.getScreenX()); contextMenu.show(imgWidnow.getScene().getWindow()); }) ;
    • @RafatRefai 以前从未见过这种行为。 show(Node, double, double) 方法一直对我有用。您使用的是什么操作系统/JDK 版本? (要使其接近失去焦点,请尝试contextMenu.setAutoHide(true);。)
    • 我可以在明确setXsetY 工作而不是show(Node, double, double) 之后确认show(Window)。我在 macOS 10.15.2 中使用 JDK 8u241。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多