我正在尝试添加一个事件,用于在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)
由于
答案 0 :(得分:0)
可以使用MenuItem的CustomMenuItem来解决。 和
CustomMenuItem cmi = new CustomMenuItem();
cmi.getContent().setOnMouseClicked(new EventHandler<MouseEvent>()...