1. 创建菜单
在主进程文件 main.js 中,你可以使用 Menu 和 MenuItem 类来创建应用程序菜单。以下是一个简单的例子:
const { app, BrowserWindow, Menu } = require('electron');
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadFile('index.html');
const template = [
{
label: '文件',
submenu: [
{
label: '新建',
accelerator: 'CmdOrCtrl+N',
click: () => {
// 在这里处理新建文件的逻辑
},
},
{
label: '打开',
accelerator: 'CmdOrCtrl+O',
click: () => {
// 在这里处理打开文件的逻辑
},
},
{
type: 'separator',
},
{
label: '退出',
accelerator: 'CmdOrCtrl+Q',
click: () => {
app.quit();
},
},
],
},
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
}
app.whenReady().then(createWindow);
2. 使用系统托盘
你可以使用 Tray 类来在系统托盘中添加图标,并在点击时触发相应事件。以下是一个示例:
const { app, BrowserWindow, Tray } = require('electron');
const path = require('path');
let mainWindow;
let tray;
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadFile('index.html');
tray = new Tray(path.join(__dirname, 'icon.png'));
tray.setToolTip('My Electron App');
tray.on('click', () => {
mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show();
});
}
app.whenReady().then(createWindow);
3. 弹出对话框
使用 dialog 模块,你可以在 Electron 中创建各种对话框,例如打开文件对话框、保存文件对话框等。以下是一个例子:
const { app, BrowserWindow, dialog } = require('electron');
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadFile('index.html');
mainWindow.webContents.on('did-finish-load', () => {
// 在页面加载完成后,弹出文件选择对话框
dialog.showOpenDialog(mainWindow, {
properties: ['openFile'],
filters: [
{ name: '文本文件', extensions: ['txt'] },
{ name: '所有文件', extensions: ['*'] },
],
})
.then(result => {
console.log(result.filePaths);
})
.catch(err => {
console.log(err);
});
});
}
app.whenReady().then(createWindow);
这些是一些基本的桌面环境集成示例。你可以根据你的应用需求,进一步使用 Electron 提供的 API 创建更丰富的桌面应用体验。
转载请注明出处:http://www.zyzy.cn/article/detail/10892/Electron