Electron 自定义顶部菜单和上下文菜单

自定义顶部菜单


1. 主进程

main.js 代码如下(示例):

// main.js
const electron = require("electron")
const app = electron.app
const BrowserWindow = electron.BrowserWindow

// 声明要打开的窗口
let mainWindow = null

app.on("ready",()=>{
    mainWindow = new BrowserWindow({
        width:800,
        height:800,
        webPreferences:{
            nodeIntegration:true, //开启node接口
            contextIsolation:false,
        }
    });
    
    // 引用菜单
    require("./main/menu.js")

    // 打开调试工具
    mainWindow.webContents.openDevTools();
    mainWindow.loadFile("index.html");

})


// 当所有窗口被关闭了,退出。
app.on('window-all-closed', function() {
    if (process.platform != 'darwin') {
      app.quit();
    }
});


2. 渲染进程定义顶部菜单

menu.js 代码如下(示例):

const {Menu, BrowserWindow} = require("electron")

let template = [
    {
        label: "编辑", // 主菜单
        submenu:[ // 子菜单
            {label:"编辑文件名"},
            {label:"编辑菜单名"},
        ]
    },
    {
        label: "终端",
        submenu:[
            {
                label:"拆分终端",
            },
            {
                label:"新建终端",
                // 菜单快捷键
                accelerator:"ctrl + N",
                // 点击拆分终端,创建新窗口
                click:()=>{
                    let win = new BrowserWindow({
                        width:400,
                        height:400,
                        webPreferences:{
                            nodeIntegration:true,
                            contextIsolation:false,
                        }
                    });
                    win.loadURL("http:www.baidu.com");
                    win.on("closed",()=>{
                        win = null;
                    });
                }
            },
        ]
    }
]

// 构建菜单模版
const m =Menu.buildFromTemplate(template)

// 设置菜单模版
Menu.setApplicationMenu(m)

3. 实现效果

点击新建终端或按住ctrl + N,即可创建新窗口,并打开百度页面
在这里插入图片描述

4. 渲染进程定义上下文菜单

上下文菜单即右键菜单 contextmenu
render.js 代码如下(示例):

const { Menu } = require('@electron/remote')

// 右键菜单功能
// const remote = require("electron") // 引入 remote 模块

let rightTemplate=[
    {
        label:"粘贴",
        accelerator:'ctrl+V',
    },
    {
        label:"复制",
        accelerator:'ctrl+C',
    },
    {
        label:"剪切",
        accelerator:'ctrl+X',
    },
]

// 建立菜单模版
var rightMenu = Menu.buildFromTemplate(rightTemplate);

window.addEventListener('contextmenu',function(e){
  //阻止当前窗口默认事件
  e.preventDefault();
    //   alert(111);
  //把菜单模板添加到右键菜单        
    rightMenu.popup()
})


5. 实现效果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值