菜单项


MenuItem 代表菜单中的一个项目。MenuItem 可以是分隔符,也可以是具有标签和图标的普通项目或复选框。它可以响应鼠标点击或键盘快捷键。

概要

var item;

// Create a separator
item = new nw.MenuItem({ type: 'separator' });

// Create a normal item with label and icon
item = new nw.MenuItem({
  type: "normal", 
  label: "I'm a menu item",
  icon: "img/icon.png"
});

// Or you can omit the 'type' field for normal items
item = new nw.MenuItem({ label: 'Simple item' });

// Bind a callback to item
item = new nw.MenuItem({
  label: "Click me",
  click: function() {
    console.log("I'm clicked");
  },
  key: "s",
  modifiers: "ctrl+alt",
});

// You can have submenu!
var submenu = new nw.Menu();
submenu.append(new nw.MenuItem({ label: 'Item 1' }));
submenu.append(new nw.MenuItem({ label: 'Item 2' }));
submenu.append(new nw.MenuItem({ label: 'Item 3' }));
item.submenu = submenu;

// And everything can be changed at runtime
item.label = 'New label';
item.click = function() { console.log('New click callback'); };

new MenuItem(option)

  • option {Object} 包含 MenuItem 的初始设置的对象
    • label {String} 可选 普通项目或复选框的标签
    • icon {String} 可选 普通项目或复选框的图标
    • tooltip {String} 可选 普通项目或复选框的工具提示
    • type {String} 可选 项目的类型。接受三种类型:normalcheckboxseparator
    • click {Function} 可选 当项目被鼠标点击或键盘快捷键触发时的回调函数
    • enabled {Boolean} 可选 项目是否启用或禁用。默认设置为 true
    • checked {Boolean} 可选 复选框是否选中。默认设置为 false
    • submenu {Menu} 可选 子菜单
    • key {String} 可选 快捷键的键
    • modifiers {String} 可选 快捷键的修饰键

每个字段在 MenuItem 中都有自己的属性,有关详细信息,请参阅每个属性的文档。

MenuItem 继承自 EventEmitter。您可以使用 on 监听事件。

item.type

获取 MenuItemtype,它可以是 separatorcheckboxnormal

注意

类型只能在创建时设置。它不能在运行时更改。

item.label

获取或设置 MenuItemlabel,目前它只能是纯文本。

item.icon

获取或设置 MenuItemicon,它必须是您图标文件的路径。它可以是相对于您的应用程序的图标的相对路径,也可以是指向用户系统中文件的绝对路径。

它对设置 separator 项目的 icon 没有影响。

item.iconIsTemplate (Mac)

获取或设置 icon 图像是否被视为“模板”(默认情况下为 true)。当属性设置为 true 时,图像被视为“模板”,系统会根据状态项的不同状态(例如,深色菜单、浅色菜单等)自动确保适当的样式。模板图像应仅包含黑色和透明颜色,并且可以使用图像中的 alpha 通道来调整黑色内容的不透明度。它对 Linux 和 Windows 没有影响。

item.tooltip (Mac)

获取或设置 MenuItemtooltip,它只能是纯文本。tooltip 是一个简短的字符串,描述了菜单项,当您将鼠标悬停在该项上时,它将显示。

item.checked

获取或设置 MenuItem 是否 checked。通常,如果 MenuItem 被选中。它的左侧将有一个标记。它主要用于指示选项是否开启。

item.enabled

获取或设置 MenuItem 是否 enabled。禁用的 MenuItem 将变灰,您将无法点击它。

item.submenu

获取或设置 MenuItemsubmenusubmenu 必须是 Menu 对象。您应该在创建 MenuItem 时在 option 中设置 submenu。在运行时更改它在某些平台上速度很慢。

item.click

获取或设置 MenuItemclick 回调,click 必须是一个有效的函数。当用户激活该项目时,它将被调用。

item.key

一个单字符字符串,用于指定菜单项的快捷键。

所有平台的有效键

  • 字母:a-z
  • 数字: 0-9
  • 主区域的其他键: [ , ] , ' , , , . , / , ` , - , = , \ , ' , ; , Tab
  • Esc
  • 向下 , 向上 , 向左 , 向右
  • W3C DOM Level 3 KeyboardEvent 键值: KeyA (与 A 相同), Escape (与 Esc 相同), F1, ArrowDown (与 Down 相同) 等等。

仅限 Mac 的特殊键

在 Mac 上,您还可以使用特殊键作为快捷键,使用 String.fromCharCode(specialKey)。以下是一些有用的键

  • 28: 左 ()
  • 29: 右 ()
  • 30: 上 ()
  • 31: 下 ()
  • 27: Escape ()
  • 11: PageUp ()
  • 12: PageDown ()

有关 Mac 上支持的完整特殊键列表,请参阅 NSMenuItem.keyEquivalentNSEvent: Function-Key Unicodes.

item.modifiers

一个字符串,用于指定菜单项快捷键的修饰键。它应该是以下字符串的串联: cmd / command / super, shift, ctrl, alt。例如 "cmd+shift+alt"

cmd 在所有平台上代表不同的键: Windows 键 (Windows) 在 Windows 和 Linux 上,Apple 键 () 在 Mac 上。supercommandcmd 的别名。

事件:click

当用户激活菜单项时发出。