您的位置:首页 > 其它

JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)

2016-10-21 08:47 495 查看
需求:
在界面的右键事件中添加一个打开开发者选项的菜单(Show Dev Tools)

所以我们可以看到的是在界面上右键,会有默认的一些菜单项(前进,后退,打印,查看源码),而这些功能并不一定是我们需要的,所以我们首先要做的就是去除这些选项,参考:java cef3 如何禁止右键菜单项

同理,我们只需要在CefContextMenuHandler接口的实现类中去定制我们的菜单项即可,代码如下:

public class ContextMenuHandler implements CefContextMenuHandler {

private final Frame owner;

public ContextMenuHandler(Frame owner) {
this.owner = owner;
}

@Override
public void onBeforeContextMenu(CefBrowser browser, CefContextMenuParams params, CefMenuModel model) {
model.clear();//清除默认的菜单项
model.addItem(MenuId.MENU_ID_SHOW_DEV_TOOLS, "开发者选项");
}

@Override
public boolean onContextMenuCommand(CefBrowser browser, CefContextMenuParams params, int commandId,
int eventFlags) {
switch (commandId) {
case MenuId.MENU_ID_SHOW_DEV_TOOLS: {
// 打开开发者选项
DevToolsDialog devToolsDlg = new DevToolsDialog(owner, "开发者选项", browser);
devToolsDlg.setVisible(true);
return true;
}
default: {
return false;
}
}
}

@Override
public void onContextMenuDismissed(CefBrowser browser) {

}

}


在onBeforeContextMenu中先清除默认的菜单项,然后绑定开发者选项,这里需要注意的是,MenuId.MENU_ID_SHOW_DEV_TOOLS这个在MenuId中是不存在的,需要我们手动添加进去

接着我们在onContextMenuCommand方法中绑定菜单事件,然后重启服务器,在界面上右键即可看到开发者选项,点击打开开发者选项对话框

附DevToolsDialog的实现:





public class DevToolsDialog extends JDialog {

private static final long serialVersionUID = 6859581641415822180L;

private final CefBrowser devTools_;

public DevToolsDialog(Frame owner, String title, CefBrowser browser) {
this(owner, title, browser, null);
}

public DevToolsDialog(Frame owner, String title, CefBrowser browser, Point inspectAt) {
super(owner, title, false);

setLayout(new BorderLayout());
setSize(800, 600);
setLocation(owner.getLocation().x + 20, owner.getLocation().y + 20);

devTools_ = browser.getDevTools(inspectAt);
add(devTools_.getUIComponent());

addComponentListener(new ComponentAdapter() {
@Override
public void componentHidden(ComponentEvent e) {
dispose();
}
});
}

@Override
public void dispose() {
devTools_.close();
super.dispose();
}
}


View Code
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: