我有一个 web 视图,其中我根据 HTML 元素的类型给出了上下文菜单选项。很少有元素有 3 个菜单项,很少有其他元素有 6 个菜单项。
上面两张图片是一些例子。在右键单击文本字段时,我得到 6 个菜单选项。右键单击链接,我得到两个菜单项。
现在,当我再次右键单击文本字段时出现问题。它以前一个菜单的大小显示上下文菜单(即只有两行)。但是,如果我再次右键单击文本字段,它会正确显示。下面是显示这一点的图像。
这是 JavaFX 中的问题还是我遗漏了什么?请帮忙。我的代码是这样的。
List<MenuItem> menus = new ArrayList<MenuItem>();
if(action.equals("Editbox")){
createContextMenu(webView, VerifyActionsUtil.getActionItems(action), x, y);
}else if(action.equals("Link")){
createContextMenu(webView, VerifyActionsUtil.getActionItems(action), x, y);
}else{
createContextMenu(webView, menus, x, y);
}
public void createContextMenu(WebView webView, List<MenuItem> menus, int x, int y) {
menu.getItems().clear();
if(menus!=null && menus.size()>0){
menu.getItems().addAll(menus);
menu.show(webView, x, y);
}
}
action
是用于检查元素类型的对象。VerifyActionsUtil.getActionItems(action)
根据 . 给出菜单项列表action
。
public class VerifyActionsUtil {
MenuItem item0=new MenuItem("check_if_enabled-True");
MenuItem item1=new MenuItem("check_if_exists-True");
MenuItem item2=new MenuItem("check_if_displayed-True");
MenuItem item3=new MenuItem("get_the_text_of_the_textfield");
public VerifyActionsUtil() {
item0.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
insert(item0);
}
});
//similar actions for other menu items
//insert method inserts the details into a table.
}
public List<MenuItem> getActionItems(String objectType) {
List<MenuItem> menuItems = new ArrayList<MenuItem>();
if("Editbox".equals(objectType)){
menuItems.add(item0);
menuItems.add(item9);
menuItems.add(item1);
menuItems.add(item10);
menuItems.add(item2);
menuItems.add(item3);
menuItems.add(item4);
menuItems.add(item5);
}else if("Radio".equals(objectType)){
menuItems.add(item1);
menuItems.add(item10);
menuItems.add(item2);
menuItems.add(item0);
menuItems.add(item9);
menuItems.add(item5);
}
return menuItems;
}