2017-06-16 7 views
0

私は電子をWindows上で書くのが初めてです。 menuTemplateを作成すると、これは開いているすべてのウィンドウに表示されます。 mainWindowにメニューを表示する方法はありますか? (ない私が作成するポップアップウィンドウ上)電子 - メインウィンドウのみのメニューを表示

Index.js mainWindow.setMenu(mainMenu)

const electron = require('electron'); 

const { app, BrowserWindow, Menu } = electron; 

let mainWindow; 
let addWindow; 

app.on('ready',() => { 
    mainWindow = new BrowserWindow({}); 
    mainWindow.loadURL(`file://${__dirname}/main.html`); 
    mainWindow.on('closed',() => app.quit()); 

    const mainMenu = Menu.buildFromTemplate(menuTemplate); 
    Menu.setApplicationMenu(mainMenu); 
}); 

function createAddWindow() { 
    addWindow = new BrowserWindow({ 
    width: 300, 
    height: 200, 
    title: 'Add New Todo' 
    }); 
    addWindow.loadURL(`file://${__dirname}/add.html`) 
} 

const menuTemplate = [ 
    { 
    label: 'File', 
    submenu: [ 
     { 
     label: 'New Todo' , 
     click() { createAddWindow(); } 
     }, 
     { 
     label: 'Quit', 
     accelerator: process.platform === 'darwin' ? 'Command+Q' : 'Ctrl+Q', 
     click() { 
      app.quit(); 
     } 
     } 
    ] 
    } 
]; 

if (process.platform === 'darwin') { 
    menuTemplate.unshift({}); 
} 
+0

'process.platform === 'darwin'の代わりに' CommandOrControl + Q'または 'CmdOrCtrl + Q'を使用できますか? 'Command + Q': 'Ctrl + Q'です。 [Accelerator](https://github.com/electron/electron/blob/master/docs/api/accelerator.md) – RoyalBingBong

答えて

2

変更Menu.setApplicationMenu(mainMenu);。それが唯一のウィンドウのためにそれが呼び出されたwin.setMenuセットながらMenu.setApplicationMenu

は、すべて BrowserWindowsのためのメニューを設定します。

+0

を参照してください。新しいウィンドウがすべてデフォルトのメニューバーに戻されますか?すべての新しいウィンドウにデフォルトバーを使用させない簡単な方法はありますか? –

+1

'Menu.setApplicationMenu(null)'を使ってデフォルトのメニューを無効にします(Macはまだメニューが一番上にあります)。次にmainWindowの 'mainWindow.setMenu(mainMenu)'でメニューを通常どおりに設定します。 – RoyalBingBong

関連する問題