Electron自定义导航栏

文章讲述了如何在Electron应用中创建动态菜单,包括在主进程中渲染菜单模板和处理菜单事件,如监听`ctrl+n`新建文件,以及在主进程直接修改菜单并发送消息给渲染进程。
摘要由CSDN通过智能技术生成

1.新建menu.js文件

/**
 * 创建菜单,主进程渲染(建议)
 */
import { Menu } from 'electron';

//定义菜单
var template = [
    {
        label: '文件',
        submenu: [
            {
                label: '新建文件',
                //监听事件
                click: function () {
                    console.log("ctrl+n")
                },
                //绑定快捷键
                accelerator: 'ctrl+n'
            },
            {
                label: '新建窗口'
            }
        ]
    },
    {
        label: '编辑',
        submenu: [
            {
                label: '复制',
                //规则
                role: 'copy'
            },
            {
                label: '剪切',
                role: 'cut'
            },
            {
                label: '重新加载',
                role: 'reload'
            },
        ]
    },{
        label:"打开测试窗口"
    }
]

var m = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(m);

在主进程中引入

async function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 800,
    webPreferences: {
      nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
    }
  })

  //在初始化窗口中引入设置好的菜单
  require("./components/menu.js");
}

2.直接在主进程中修改

async function createWindow() {
   var m = Menu.buildFromTemplate([
    {
      label: '文件',
      submenu: [
        {
          label: '新建文件',
          //监听事件
          click: function () {
            console.log("ctrl+n")
            win.webContents.send('main', 'ok')  //向渲染进程发送消息
          },
          //绑定快捷键
          accelerator: 'ctrl+n'
        },
        {
          label: '新建窗口'
        }
      ]
    },
    {
      label: '编辑',
      submenu: [
        {
          label: '复制',
          //规则
          role: 'copy'
        },
        {
          label: '剪切',
          role: 'cut'
        },
        {
          label: '重新加载',
          role: 'reload'
        },
      ]
    }, {
      label: "打开测试窗口",
      click: () => {  //点击以后触发的事件
          win.webContents.openDevTools()
      },
      accelerator: 'f12'  //绑定快捷键
    }
  ]);
  Menu.setApplicationMenu(m); 
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值