JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)
需求:
在界面的右键事件中添加一个打开开发者选项的菜单(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();
}
}
JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)的更多相关文章
- CEF 右键添加开发者选项菜单项
在项目开发过程中,有时候需要进行调试测试,然后我们可以在cef上下文菜单中添加自定义开发者工具菜单项,这样会比较方便,最后效果: 实现过程: 让自己的MyClientHandler来继承 CefCon ...
- MyEclipse右键new菜单项的设置 及 Eclipse中各种文件不能保存中文的问题
有时候,myeclipse右键new的时候经常出现一些ejb等文件你懂的,很是恶心~~ Window --> Customize Perspective --> Submenus --&g ...
- 如何在maven项目的pom.xml文件中添加jar包
在使用maven进行项目开发时,我们需要在pom.xml文件中添加自己所需要的jar包.这就要求我们获取jar包的groupId和artifactId. 我们可以在一些maven仓库上搜索我们所需要的 ...
- linux在菜单中添加SEG选项
- Visual C# 2010 实现菜单项和状态栏
演练:向窗体提供标准菜单项 Visual Studio 2010 其他版本 此主题尚未评级 - 评价此主题 可以通过 MenuStrip 控件为窗体提供标准菜单. 此演练演示如何使 ...
- C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得
在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料 自己研究了一个使用方法.下面来看看. 我有两个窗体:LOGINFRM,M ...
- iview可收缩侧边菜单实现(支持二级菜单)
想用iview做一个可以伸缩的侧边菜单栏,效果如下: 1.侧边栏收缩前:可以通过点击菜单分类展开子菜单项: 2.可以让用户点击图标动态收缩菜单栏: 3.侧边栏收缩后:只显示菜单分类的图标,鼠标放置在菜 ...
- 怎样在Windows资源管理器中添加右键菜单以及修改右键菜单顺序
有时,我们需要在Windows资源管理器的右键菜单中添加一些项,以方便使用某些功能或程序. 比如我的电脑上有一个免安装版的Notepad++,我想在所有文件的右键菜单中添加一项用Notepad++打开 ...
- 基于electron+vue+element构建项目模板之【自定义标题栏&右键菜单项篇】
1.概述 开发平台OS:windows 开发平台IDE:vs code 本篇章将介绍自定义标题栏和右键菜单项,基于electron现有版本安全性的建议,此次的改造中主进程和渲染进程彼此语境隔离,通过预 ...
随机推荐
- TiD大会学习心得之沟通交流
沟通交流是敏捷成功的关键要素,据相关调查阻碍敏捷的主要原因都与人有关:例如缺乏领导支持.团队缺乏协作精神.公司文化与敏捷相冲突等等:同时沟通交流也是团队建设.教练自身成长的重要支柱.下面结合在< ...
- java中的访问修饰符
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符.其中package代表缺省的访问权限,具体到代码中就是不写任何修饰符的 ...
- Java 三章错题
1.每个类都使用Object作为超类.所以对象(包括数组)都实现这个类的方法. 2.在不明确给出超类的情况下,java会自动把object作为要定义的超类. 可以使用类型为Object的变量指向任意类 ...
- Canvas 知识体系简单总结
Canvas 知识体系简单总结 标签(空格分隔): HTML5 Canvas 本文原创,如需转载,请注明出处 前言 知识点零零散散,一个上午整理了一下,内容不多,方便记忆. 本文不是教程,如需教程移步 ...
- pixelmator处理png图片,处理掉过白的留白。
作为一个CTO,还是得学会一些普通的修图技术的.这不,刚学会在pixelmator下如何处理png中过多的留白. 汗,其实就是一个菜单选项而已./image/trim canvas 效果如下:
- 申请使用aws的一些笔记
1. 申请可以使用asw.amazon.com/cn/,这个界面虽然是中文的,但是申请的是海外的aws. 2. 审核后会收到如下的一封邮件: 3. 剩下创建EC2和RDS的过程可以参考http://w ...
- 一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...
- a 添加href后当前栏目如何高亮显示
//nav $(".nav li a").each(function() { $this = $(this); if ($this[0].href == String(window ...
- java编程思想 一切都是对象
java是一种面向对象程序设计语言,一切都是对象,并且用引用操作对象,如一个电视机就是一个对象,而操作电视机的遥控器就是引用,引用可以单独存在,如遥控器可以单独存在. String s; 这里只是创建 ...
- call经常用到的地方
看完这几个下例子,会对学习js有所帮助1.小猫和小狗 function food(){} food.prototype={ food:'fish', say:function(){ console.l ...