场景

用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106413828

Electron怎样进行渲染进程调试和使用浏览器和VSCode进行调试:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106414541

在上面搭建好项目以及知道怎样进行调试后,那么Electron怎样实现菜单项。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先在renderer.js中引入Menu和MenuItem

const {remote} = require('electron');
const {Menu, MenuItem} = remote;

然后为了触发按钮弹出的操作,在index.html中添加一个按钮,并设置id

<button id="menuItem">弹出菜单</button>

然后在renderer.js中获取这个按钮并设置其点击事件,在点击事件中添加菜单项

var btnMenuItem=document.getElementById('menuItem');
btnMenuItem.onclick = PopMenu;function PopMenu()
{const template = [{ label: "公众号:" },{ label: "霸道的程序猿" , click: () => {console.log("点击事件OK");}},{ role: "undo"},{ role: "redo"},{ label: "旅游", type: "checkbox", checked: true},{ label: "吃", type: "checkbox", checked: true},{ label: "逛街", type: "checkbox", checked: false},new MenuItem({label: "这是menuItem生成的菜单", click: ()=> {console.log("您点击了menuItem的菜单");}}),{label: "子菜单测试",submenu: [{label: "子菜单-1"},{label: "子菜单-2"},{label: "子菜单-3"}]}
];
const menu = Menu.buildFromTemplate(template);
menu.popup();
}

效果

上面的undo就是执行撤销的操作,redo就是重新执行撤销的操作,类似的操作还有

const template = [{label: 'Edit',submenu: [{role: 'undo'},{role: 'redo'},{type: 'separator'},{role: 'cut'},{role: 'copy'},{role: 'paste'},{role: 'pasteandmatchstyle'},{role: 'delete'},{role: 'selectall'}]},{label: 'View',submenu: [{role: 'reload'},{role: 'forcereload'},{role: 'toggledevtools'},{type: 'separator'},{role: 'resetzoom'},{role: 'zoomin'},{role: 'zoomout'},{type: 'separator'},{role: 'togglefullscreen'}]},{role: 'window',submenu: [{role: 'minimize'},{role: 'close'}]},{role: 'help',submenu: [{label: 'Learn More',click () { require('electron').shell.openExternal('https://electron.atom.io') }}]}
]if (process.platform === 'darwin') {template.unshift({label: app.getName(),submenu: [{role: 'about'},{type: 'separator'},{role: 'services', submenu: []},{type: 'separator'},{role: 'hide'},{role: 'hideothers'},{role: 'unhide'},{type: 'separator'},{role: 'quit'}]})// Edit menutemplate[1].submenu.push({type: 'separator'},{label: 'Speech',submenu: [{role: 'startspeaking'},{role: 'stopspeaking'}]})// Window menutemplate[3].submenu = [{role: 'close'},{role: 'minimize'},{role: 'zoom'},{type: 'separator'},{role: 'front'}]
}const menu = Menu.buildFromTemplate(template)menu.popup();

效果

Electron中实现菜单、子菜单、以及自带操作事件相关推荐

  1. Android菜单:选项菜单+上下文菜单+子菜单

    菜单是人机交互的重要接口,在 Android SDK 中,提供了菜单类 android.view.Menu,以完成与菜单有关的操作. Android SDK 提供三种菜单,分别如下. 1)Option ...

  2. 左侧导航菜单 子菜单的显示隐藏效果

    直接上代码,逻辑都在注释里 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <ht ...

  3. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  4. android子视图无菜单,Android 菜单详解

    Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...

  5. php在菜单栏里加子菜单,WordPress后台添加子菜单add_submenu_page()

    接上文:WordPress后台添加顶级菜单add_menu_page(),今儿再分享一下在 wordpress 后台侧边栏添加子菜单的方法,用到的函数是:add_submenu_page() 函数用法 ...

  6. 【Android基础知识】选项菜单、上下文菜单、子菜单的使用

    Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...

  7. 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单

    菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...

  8. 选项菜单和子菜单(SubMenu)

    /*  * 选项菜单和子菜单(SubMenu)  * 添加菜单和子菜单的步骤如下:  * 1.重写Activity哦onCreateOptionsMenu(Menu menu)的方法,  *   在该 ...

  9. [转]Appfuse的多重子菜单问题

    为什么80%的码农都做不了架构师?>>>    开发一个项目中,利用appfuse2.0.2版本,当menu-config.xml中包含多重子菜单的时候,在非 IE8版本中运行时页面 ...

最新文章

  1. mysql 转pxc_PXC 配置笔记-从MySQL直接转成PXC集群
  2. TD-SCDMA向HSPA+的演进
  3. PyCharm与git/GitHub取消关联
  4. 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)
  5. 查询linux kafka安装目录,Kafka 1.0.0安装和配置--Linux篇
  6. golang map使用总结
  7. leecode-3无重复字符串的最长子字符串C版-滑动窗口
  8. LeCun:深度学习在信号理解中的强大和局限(视频+PPT)
  9. 教授先生带你学习链表:链表节点的删除与增添2
  10. Python: 生成器,yield
  11. caffe中 softmax 函数的前向传播和反向传播
  12. 小米6Android11刷机包,钉子户小米6的新生,换电池、背盖,升级android11
  13. [转载] 采访:蔡学镛谈复杂事务处理(CEP)
  14. mx4 pro 刷 原生 android,如期而至:MX4 Pro 迎来首个 Android 5.0 体验固件
  15. 【转】王阳明:耐住寂寞,守得花开
  16. 游安军编著的计算机数学答案,计算机数学
  17. 怎么点亮段码屏_段码LCD液晶屏驱动方法
  18. 15 《上帝之饮:六个瓶子里的历史》 -豆瓣评分7.5
  19. 【深度学习】医学图像自动分割的评价指标讲解
  20. 【openGL2021版】粒子系统(全)

热门文章

  1. Java进阶:Semaphore信号量基本使用
  2. mysql cascaded local_学习笔记-mysql_视图
  3. java微信群自动回复_Java故事之路在脚下
  4. android webview tel:,Android WebView“tel:”链接显示未找到网页
  5. 在 echarts关系图动态线上添加文字_多折线堆叠图如何制作?
  6. 审批流_想做流程审批的开发?带你玩转Activity工作流(一)
  7. C语言编写Scheme解释器,C语言编写logo语言解释器 ,求高手指导
  8. python搭建django框架,Python之Web框架Django项目搭建全过程
  9. quad8是matlab中调用那个,Matlab 数值积分
  10. nebula如何实现用in实现any(x,y,z)的效果