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现有版本安全性的建议,此次的改造中主进程和渲染进程彼此语境隔离,通过预 ...
随机推荐
- jQuery 实时监听<input>输入值的变化
这方法比 on('keydown') 更实时 <input type='text' id='input1'/>$(document).ready(function(){ $('#input ...
- bootstrap 部分css样式
clip: rect(0, 0, 0, 0);剪裁绝对定位元素.outline: 0; cursor: not-allowed;
- 总结:客户端与服务器端使用正则增加URL参数的方法
先说服务器端的: C#版本 #region URL参数操作 /// <summary> /// URL参数操作 /// </summary> public class UrlP ...
- cxf spring restful 问题解决(jar包冲突)
SEVERE: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error ...
- ACM集训的Training Day 3的A题。。。
A. 等差数列 一.题目描述: 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来 ...
- Docker的容器
容器是一个打包了应用和服务的环境,是一个轻量级的虚拟机,每一个容器都由一组特定的应用和必要的依赖库组成. 容器的管理操作 容器常见的命令:查看.创建.启动.终止和删除 创建容器 docker crea ...
- DIY PIXHAWK APM等飞控用的声纳
代码: SR04 + ApmSonar.ino 打包下载 注意,使用到了SR04的类库. ApmSonar.ino // sr04 to apm I2c sonar // by panxu mail: ...
- CentOS双网卡绑定bond0
a)拷⻉并配置vim /etc/sysconfig/network-scripts/ifcfg-bond0配置⽂件(会自动创建文件) DEVICE=bond0 TYPE=Ethernet ONBOOT ...
- TCL笔试题 将A,B,B,C,D,E,第三个字符不可以是E的所有组合输出;
思路:利用排列思想,进行递归:#include "iostream" using namespace std; ]; void pick_one(char a[],int num[ ...
- PHP设计模式之:单例模式
前 些日子开始着真正的去了解下设计模式,开始么,简单地从单例模式开始,当然网上看了一些资料,单例模式比较好理解,看看介绍,然后看看代码基本也就能够理 解了,设计模式这些的花点心思基本的是能够理 ...