Electron 从入门到实践03

使用Electron API 创建原生的菜单

1、使用模版创建菜单

在原来的项目目录基础上,修改main.js文件

const { app, BrowserWindow, Menu } = require('electron')  // 引入Menu 
// 保持对window对象的全局引用,如果不这么做的话,当JavaScript对象被
// 垃圾回收的时候,window对象将会自动的关闭
let win

function createWindow () {
  win = new BrowserWindow({
    // 设置窗口大小
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })
  // 使用模版创建菜单
  const template = [{
        label: '文件',   // 设置菜单项文本
        submenu: [    // 设置子菜单
          {
              label: '关于',
              role: 'about',       // 设置菜单角色(关于),只针对 Mac  OS X 系统
              click: (menuItem, browserWindow, event)=>{     // 设置单击菜单项的动作(弹出一个新的模态窗口)
                  var aboutWin = new BrowserWindow({width:300,height:200,parent:win,modal: true});
                  aboutWin.loadURL('https://blog.csdn.net/haeasringnar');
                  console.log('role:', menuItem.role)
                }
          },
          {
              type: 'separator'       // 在此处为菜单加分隔栏
          },
          {
              label: '关闭',
              accelerator: 'Ctrl+Q',      // 设置菜单快捷键
              click: ()=>{win.close()}
          }
        ]
    }];
  const menu = Menu.buildFromTemplate(template);
  //  开始设置菜单
  Menu.setApplicationMenu(menu);

  // 加载index.html文件
  win.loadFile('index.html')
  ..........

运行后效果如下
在这里插入图片描述

2、使用菜单项创建菜单

修改main.js文件,在template下增加以下代码

{
    label: '调试',
    submenu: [
        {
            label: '显示调试工具',
            role:'toggleDevTools'
        }
    ]
  },
  {
    label: '编辑',
    submenu: [
        {
              label: '撤销',
              role:'undo',
              click:()=>{win.webContents.undo()} // 在点击时执行撤销命令
          },
          {
              label: '重做',
              role:'redo',
              click:()=>{win.webContents.redo()} // 在点击时执行重做命令
          },
          {
            type:'separator'   // 设置菜单项分隔条
          },
          {
              label: '剪切',
              role:'cut'
          },
          {
              label: '复制',
              role:'copy',
              click:()=>{win.webContents.copy()} // 在点击时执行复制命令
          },
          {
              label: '粘贴',
              role:'paste',
              click:()=>{win.webContents.paste()} // 在点击时执行粘贴命令
          }
    ]
  }

运行后效果如下
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值