在电子应用中动态更改BrowserWindow位置

时间:2017-11-16 11:49:56

标签: node.js electron

我在window.js中创建一个菜单,当我们点击它时,当前的浏览器窗口位置会发生变化。我有我的app.js文件,我在其中创建了我的browserWindow并设置了x,y。现在我该如何更改当前browserWindow的x,y值?

app.js中的我的BrowserWindow

 window = new BrowserWindow({
      width: 265,
      height: screenheight,
      x: screenXPosition,
      y: 0,
      icon: "icon.ico",
      skipTaskbar: true,
      alwaysOnTop: false,
      show: false,
      frame: false,
      autoHideMenuBar: true,
      transparent: true,
      // resizable: false
    })

我有一个Window.js文件,我的菜单是。是否需要将当前窗口实例传递给window.js?如果是,我该如何将当前的browserWindow实例传递给window.js到app.js?我们如何改变x,y值? 可能吗 ? 我的window.js菜单

//Menu
const menu = new Menu()
// Build menu one item at a time, unlike
menu.append(new MenuItem({
    label: 'Settings'

}))
menu.append(new MenuItem({
    type: 'separator'
}))
menu.append(new MenuItem({
    label: 'position',
    submenu: [{
            label: 'right',
            role: '25%',
            type: 'checkbox',
            checked: true,
            click: function () {
                console.log('25%');
            }
        },
        {
            type: 'separator'
        },
        {
            label: 'left',
            role: '50%',
            click: function () {
                console.log('50%');
            }
        },
        {
            type: 'separator'
        },
        {
            label: 'center',
            role: '50%',
            click: function () {
                console.log('50%');
            }
        }
    ]
}))
window.addEventListener('contextmenu', (e) => {
    e.preventDefault()
    menu.popup(remote.getCurrentWindow())
}, false)

1 个答案:

答案 0 :(得分:0)

在menuItem中,单击当前browserWindow的参数。

要设置x和y位置,您可以使用window.setPosition(x, y)

所以你的menuItem代码是这样的:

{
    label:   'right',
    role:    '25%',
    type:    'checkbox',
    checked: true,
    click:   function (item, focusedWindow) {
        console.log('25%');
        focusedWindow.setPosition(10, 10);
    }
}

window.setPosition

menuItem arguments