当前位置: 首页 > 知识库问答 >
问题:

无法为MenuItem设置MouseEvent以触发ContextMenu。另一个解决办法是什么?

贡光明
2023-03-14

给定EventHandler代码:

        EventHandler<MouseEvent> MEvent = new EventHandler<MouseEvent>(){
        @Override
        public void handle(MouseEvent arg0) {
            if (arg0.getButton() ==  MouseButton.PRIMARY) 
                System.out.println("FIRE LEFT MB");
            }
            else if (arg0.getButton() == MouseButton.SECONDARY) {
                System.out.println("FIRE RIGHT MB");
            }
        }
    };  
MenuBar().getMenus().get(a).getItems().get(b).addEventHandler(MouseEvent.MOUSE_CLICKED, MEvent);

是否有可能使用更具体的ActionEvent?

也许一个过滤器是走的路?

共有1个答案

顾学真
2023-03-14

如果不想检查按下了哪个鼠标按钮,可以简单地使用setonaction

MenuBar menuBar = new MenuBar();
Menu menu = new Menu("Menu");
MenuItem menuItem = new MenuItem("Click here");
menu.getItems().add(menuItem);
menuBar.getMenus().add(menu);
menuItem.setOnAction(e -> System.out.println("On Action"));

如果希望附加真正的鼠标处理程序,可以尝试将CustomMenuItemLabel作为图形,然后可以在该Label上附加任何侦听器:

MenuBar menuBar = new MenuBar();
Menu menu = new Menu("Menu");

Label customMenuLabel = new Label("Custom menu item");
CustomMenuItem menuItem = new CustomMenuItem(customMenuLabel);

customMenuLabel.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
    if (event.getButton() ==  MouseButton.PRIMARY)
        System.out.println("FIRE LEFT MB");
    else if (event.getButton() == MouseButton.SECONDARY)
        System.out.println("FIRE RIGHT MB");
});

menu.getItems().add(menuItem);
menuBar.getMenus().add(menu);
 类似资料:
  • 本文向大家介绍Android CheckBox中设置padding无效解决办法,包括了Android CheckBox中设置padding无效解决办法的使用技巧和注意事项,需要的朋友参考一下 Android CheckBox中设置padding无效解决办法 CheckBox使用本地图片资源 CheckBox是Android中用的比较多的一个控件,不过它自带的button样式比较丑,通常都会替换成本

  • 本文向大家介绍JS设置时间无效问题的解决办法,包括了JS设置时间无效问题的解决办法的使用技巧和注意事项,需要的朋友参考一下 在发送短信息验证码的时候要用到js设置时间倒序问题:有时候这种常规写法会导致js失效,试了很多方法才找到问题所在,可能是因为js版本过低导致。 解决方法: 或者: jquery代码:必须用input设置value值,以便利用jquery更改value值 以上所述是小编给大家介

  • 我无法解决getWindow();由于某种原因的方法...

  • 本文向大家介绍MYSQL设置触发器权限问题的解决方法,包括了MYSQL设置触发器权限问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MYSQL设置触发器权限的方法,针对权限错误的情况非常实用。具体分析如下: mysql导入数据提示没有SUPER Privilege权限处理,如下所示: 导入function 、 trigger 到 MySQL database,报错: 原因:

  • 问题内容: 我刚刚下载了Hibernate 4.0.1最终版本的新版本。当我键入以下代码时,很奇怪: Eclipse IDE在STRING关键字上显示错误。我确定我的构建路径中有hibernatejar,并且还包含了以下代码: 我只是想知道为什么会发生这种情况? 问题答案: 因为该字段在4.0中不存在。 3.5中的现场文档说: 不推荐使用。 看到 http://opensource.atlassi

  • 本文向大家介绍ios10以下safari设置style无效的解决方法,包括了ios10以下safari设置style无效的解决方法的使用技巧和注意事项,需要的朋友参考一下 项目中遇到的奇怪问题,已定位原因。Attempted to assign to readonly property报错 起因:项目中写了个点击事件,增加动态效果,类似于转一转,rotate(360)。很简单的一个特效。 设置元素