如何创建非可调整大小且占满屏幕(非全屏)的Electron BrowserWindow
实现Electron主窗口占满屏幕(非全屏)且不可调整大小
嗨,我来帮你搞定这个Electron窗口的需求!你想要的是让主窗口填满整个屏幕(保留窗口框架,不是那种隐藏标题栏的沉浸式全屏),同时禁止用户调整窗口大小,下面给你两种实用的实现方案:
方案一:通过屏幕尺寸精确设置窗口大小
这种方式会获取屏幕的可用工作区尺寸(排除任务栏/ dock等系统UI),直接把窗口大小设为这个尺寸,同时锁定不可调整:
const electron = require('electron'); const url = require('url'); const path = require('path'); const { app, BrowserWindow, screen } = electron; // 引入screen模块获取屏幕信息 let mainWindow; app.on('ready', function(){ // 获取主显示器的工作区尺寸(系统UI之外的可用区域) const { width, height } = screen.getPrimaryDisplay().workAreaSize; mainWindow = new BrowserWindow({ resizable: false, // 禁止拖动调整窗口大小 width: width, // 窗口宽度匹配屏幕工作区宽度 height: height, // 窗口高度匹配屏幕工作区高度 center: true // 可选:让窗口默认居中显示 }); mainWindow.loadURL(url.format({ pathname: path.join(__dirname,"index.html"), protocol: 'file', slashes:true })); mainWindow.on('closed',function(){ app.quit(); }); });
方案二:直接最大化窗口并锁定大小
这种方式更简洁,创建窗口后调用最大化方法,再锁定窗口不可调整,不需要额外获取屏幕尺寸:
const electron = require('electron'); const url = require('url'); const path = require('path'); const { app, BrowserWindow } = electron; let mainWindow; app.on('ready', function(){ mainWindow = new BrowserWindow({ resizable: false, // 提前锁定窗口不可调整 width: 800, // 基础尺寸(会被maximize覆盖,可随意设置) height: 600 }); // 让窗口最大化(填满屏幕,保留窗口标题栏和框架) mainWindow.maximize(); mainWindow.loadURL(url.format({ pathname: path.join(__dirname,"index.html"), protocol: 'file', slashes:true })); mainWindow.on('closed',function(){ app.quit(); }); });
注意事项
要区分开maximize()和setFullScreen(true):
maximize()是普通窗口最大化,会保留窗口的标题栏和系统任务栏,符合你要的"占满屏幕而非全屏状态"的需求setFullScreen(true)是进入沉浸式全屏模式,会隐藏所有系统UI,这不是你想要的效果
内容的提问来源于stack exchange,提问作者Saijal Shakya
相关产品推荐
相关产品推荐

