第七节 Electron顶部菜单及右键菜单

2023-10-30 07:50

本文主要是介绍第七节 Electron顶部菜单及右键菜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录


第一节 electron 介绍

第二节 创建electron项目并启动

第三节 Electron运行流程 、 主进程渲染进程并使用nodejs

第四节 Electron 调用H5事件结合node模块fs 实现文件拖拽读取

第五节 Electron 模块介绍 remote模块详细介绍

第六节 Electron安全策略

目录

前言

今天说说顶部菜单和右键菜单,顶部菜单electron默认就有不过是英文的。右键可没有需要自己搞。我们看下默认的顶部菜单(如下图1),修改后效果如图2。

实现方法

这节我们用到了Menu模块。它可以用来创建原生菜单,可用作应用菜单和 context 菜单。这个模块是主进程的一个模块,并且可以通过 remote 模块给渲染进程调用。

一、环境及页面搭建

环境搭建见第二节

页面:在根目录下新建ipcMain文件夹新建menu.js文件

二、顶部菜单

1、在menu.js引入Menu模块

const { Menu } = require("electron");

2、定义菜单 在这块可以丰富你的菜单比如快捷键 点击事件等。

 API:Menu | ElectronCreate native application menus and context menus.https://www.electronjs.org/zh/docs/latest/api/menu

const menuTemplate = [{label:"文件"},{label:"编辑"},
]

 3、调用buildFromTemplate传入自定义菜单

const menuBuilder = Menu.buildFromTemplate(menuTemplate)

4、设置菜单setApplicationMenu

Menu.setApplicationMenu(menuBuilder)

5、主进程引入menu.js

  require('./ipcMain/menu')

6、完整menu.js代码

const { Menu } = require("electron");const menuTemplate = [{label:"文件", // 菜单名submenu:[ // 二级菜单{label:'新建',accelerator:'ctrl+n', // 快捷键click:()=>{ // 点击事件console.log("create file")}},{type: 'separator'}, // 分割线{label:'打开',},{label:'保存',}],},{label:"编辑",submenu:[ {label:'复制', role:'copy', // 快捷键与系统冲突时可以使用role属性指定click:()=>{ console.log("copy")}},{label:'粘贴',role:'paste',click:()=>{console.log("paste")}},{label:'保存',}],},
]
const menuBuilder = Menu.buildFromTemplate(menuTemplate)
Menu.setApplicationMenu(menuBuilder)

 三、右键菜单

实现逻辑:监听鼠标右键点击事件调用主进程的Menu模块。两种实现方法

  1. 使用@electron/remote模块(本节课使用方法)
  2. 主进程和渲染进程之间通信 (项目中推荐的)

 步骤:

  1. remote模块安装、主进程引入、初始化并启用 具体使用方法可参照第五节
  2. 渲染进程引入Menu模块
    const remote = require("@electron/remote")
    const Menu = remote.Menu

  3. 定义右键菜单 调用menuBuilder
    const menuContextTemplate = [{label:"编辑",submenu:[ {label:'复制', role:'copy', // 快捷键与系统冲突时可以使用role属性指定},{label:'粘贴',role:'paste',},{label:'保存',}],},
    ]
    const menuBuilder = Menu.buildFromTemplate(menuContextTemplate)

  4. 监听右键点击事件并阻止默认事件 调用menuBuilder.popup事件
window.onload = ()=>{window.addEventListener("contextmenu",(e)=>{console.log("鼠标点击了右键")e.preventDefault()menuBuilder.popup({window:remote.getCurrentWindow()})},false)
}

总结

以上就是今天要讲的内容,主要思路就是利用remote模块调用主进程模块。

每天记录一点,助力成长!

欢迎大家来浏览我的博客,如发现我有写错的地方,欢迎交流指正。

如果你觉得本文对你有帮助,欢迎点赞收藏转载,烦请注明出处,谢谢! 

这篇关于第七节 Electron顶部菜单及右键菜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306530

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节(中)——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节(中)——物理原理与TCP_IP 一.应用层重点协议)1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS7. 自定义协议 二. 传输层重点协议 1 .UDP协议 2.1.1 UDP协议端格式 2.1.2 UD

如何在Qt的widget上右键显示菜单

如何在Qt的widget上右键显示菜单 今天早上一来,我老大叫我在widget上点击右键加上一个菜单,并相应其响应的功能,因为我成刚接触Qt,所以看了下QtGUI编程这本书,做出来,记录下来,说不定哪天还用得上啊! 废话不多说,直接上代码: 方法一: m_text = QTextCodec::codecForLocale(); ui->tableWidget->addAction(ne

java AWT PopupMenu(右键菜单)

右键菜单使用PopupMenu对象表示,创建步骤如下: (1)创建PopupMenu的实例。 (2)创建多个MenuItem的多个实例,依次将这些实例加入到PopupMenu中。 (3)将PopupMenu加入到目标组件中。 (4)为需要出现上下文菜单的组件编写鼠标监听器,当用户释放鼠标右键时弹出右键菜单。 package javaAWT;import java.awt.BorderLa

java AWT菜单

菜单条,菜单和菜单项: MenuBar:菜单条,菜单的容器。 Menu:菜单组件,菜单项的容器。它也是MenuItem的子类,所以可作为菜单项使用。 PopupMenu:上下文菜单组件(右键菜单组件)。 MenuItem:菜单项组件。 CheckboxMenuItem:复选框菜单项组件。 MenuShortcut:菜单快捷组件。 Menu,MenuItem的构造器都可以接收一个字符串

超详细!!!electron-vite-vue开发桌面应用之应用更新版本提示(十三)

云风网 云风笔记 云风知识库 当项目应用包更新后应该主动提示用户更新,这是采用electron-updater进行更新提示 一、安装依赖 npm i electron-updater 二、配置安装包更新地址 electron-builder.json5添加配置 // 配置安装包更新地址publish: [{provider: "generic",url: "http://w

JQuery.HoverDir库实现侧边栏二级菜单

Jquery.hoverDir响应鼠标移动方向的悬停效果插件 HTML代码 <div id="sidebar"><div class="mainNavs"><div class="menubox"><div class="menu_main"><h2>技术<span></span></h2><a href="#">Java</a><a href="#">PHP</a><a href="#"

electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <一>

electron客户端下载、构建、打包在国内网络情况下,绝对不是什么易事。更不要说离线干活,更是难上加难。 这一篇主要讲下windows离线环境下,如何完成electron的下载打包。咱废话不多说,直接上干货。注意,我的大前提是完全没有网络。 第一,需要下载什么 windows环境下需要下载electron和electron-builder的二进制包。 electron的二进制包就是elec

右键菜单-新建里没有新建文本文档(windows 系统)

建议新建任意文件(如.doc),将后缀名改为.txt,然后将下面的内容贴入空白的TXT文件中: ----------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.txt] @="txtfile" "PerceivedTy