zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    View Code
  • 相关阅读:
    原型模式
    windows下Redis安装及利用java操作Redis
    redis笔记
    STS 安装SVN插件
    java 操作MongoDB简易工具类
    Mysql 单表数据量过大移除数据
    Mysql 提示拷贝效率
    JS 图片显示一部分 小计
    FashJson转换
    WIndow MongoDb安装和启动
  • 原文地址:https://www.cnblogs.com/minteliu/p/5729088.html
Copyright © 2011-2022 走看看