将左右键单击事件添加到MenuItem

时间:2018-01-04 20:23:52

标签: events contextmenu eventhandler

我正在尝试添加一个事件,用于在MenuItem上单击鼠标左键和右键。 左键单击转到URL,右键 - 调用上下文菜单,其中包含从列表中删除此项目的选项。

但是,实现的addEventHandler无效。

FileUtils.getFileContentsAsArrayList(FileUtils.getBookMarksFile());
            for (int i = 0; i < FileUtils.getBookmarksContents().size(); i++) {
                String item = FileUtils.getBookmarksContents().get(i);
                MenuItem miNewItem = new MenuItem(item);
                    miNewItem.addEventHandler(MouseEvent.MOUSE_CLICKED,
                        new EventHandler<MouseEvent>() {
                            @Override public void handle(MouseEvent e) {
                                if (e.getButton() == MouseButton.PRIMARY)  
                                {System.out.println("LEFT");}
                                else if (e.getButton() == MouseButton.SECONDARY)
                                {System.out.println("RIGTH");}

                            }
                    });

在最终代码中,它应该用作

            miNewItem.addEventHandler(MouseEvent.MOUSE_CLICKED,
                    new EventHandler<MouseEvent>() {
                        @Override public void handle(MouseEvent e) {
                            if (e.getButton() == MouseButton.PRIMARY)  
                            {MyJavaFXBrowser.getWebEngine().load(miNewItem.getText());}
                            else if (e.getButton() == MouseButton.SECONDARY)
                            {removeBookmark().show(miNewItem, e.getScreenX(), e.getScreenY());}

                        }
                });

但是它给出了一个错误 -

The method show(Node, double, double) in the type ContextMenu is not applicable for the arguments (MenuItem, double, double)

由于

1 个答案:

答案 0 :(得分:0)

可以使用MenuItem的CustomMenuItem来解决。 和

CustomMenuItem cmi = new CustomMenuItem();
cmi.getContent().setOnMouseClicked(new EventHandler<MouseEvent>()...