# Tray > 通过 `Tray` 向系统的通知区添加一个带有右键菜单的图标. ```javascript const electron = require('electron') const app = electron.app const Menu = electron.Menu const Tray = electron.Tray var appIcon = null app.on('ready', function () { appIcon = new Tray('/path/to/my/icon') var contextMenu = Menu.buildFromTemplate([ { label: 'Item1', type: 'radio' }, { label: 'Item2', type: 'radio' }, { label: 'Item3', type: 'radio', checked: true }, { label: 'Item4', type: 'radio' } ]) appIcon.setToolTip('This is my application.') appIcon.setContextMenu(contextMenu) }) ``` __平台限制:__ * 在 Linux, 如果支持应用指示器则使用它,否则使用 `GtkStatusIcon` 代替. * 在 Linux ,配置了只有有了应用指示器的支持, 你必须安装 `libappindicator1` 来让 tray icon 执行. * 应用指示器只有在它拥有 context menu 时才会显示. * 当在linux 上使用了应用指示器,将忽略点击事件. * 在 Linux,为了让单独的 `MenuItem` 起效,需要再次调用 `setContextMenu` .例如: ```javascript contextMenu.items[2].checked = false appIcon.setContextMenu(contextMenu) ``` 如果想在所有平台保持完全相同的行为,不应该依赖点击事件,而是一直将一个 context menu 添加到 tray icon. ## Class: Tray `Tray` 是一个 [事件发出者][event-emitter]. ### `new Tray(image)` * `image` [NativeImage](native-image.md) 创建一个与 `image` 相关的 icon. ## 事件 `Tray` 模块可发出下列事件: **注意:** 一些事件只能在特定的os中运行,已经标明. ### Event: 'click' * `event` Event * `altKey` Boolean * `shiftKey` Boolean * `ctrlKey` Boolean * `metaKey` Boolean * `bounds` Object - tray icon 的 bounds. * `x` Integer * `y` Integer * `width` Integer * `height` Integer 当tray icon被点击的时候发出事件. __注意:__ `bounds` 只在 macOS 和 Windows 上起效. ### Event: 'right-click' _macOS_ _Windows_ * `event` Event * `altKey` Boolean * `shiftKey` Boolean * `ctrlKey` Boolean * `metaKey` Boolean * `bounds` Object - tray icon 的 bounds. * `x` Integer * `y` Integer * `width` Integer * `height` Integer 当tray icon被鼠标右键点击的时候发出事件. ### Event: 'double-click' _macOS_ _Windows_ * `event` Event * `altKey` Boolean * `shiftKey` Boolean * `ctrlKey` Boolean * `metaKey` Boolean * `bounds` Object - tray icon 的 bounds. * `x` Integer * `y` Integer * `width` Integer * `height` Integer 当tray icon被双击的时候发出事件. ### Event: 'balloon-show' _Windows_ 当tray 气泡显示的时候发出事件. ### Event: 'balloon-click' _Windows_ 当tray 气泡被点击的时候发出事件. ### Event: 'balloon-closed' _Windows_ 当tray 气泡关闭的时候发出事件,因为超时或人为关闭. ### Event: 'drop' _macOS_ 当tray icon上的任何可拖动项被删除的时候发出事件. ### Event: 'drop-files' _macOS_ * `event` * `files` Array - 已删除文件的路径. 当tray icon上的可拖动文件被删除的时候发出事件. ### Event: 'drag-enter' _macOS_ 当一个拖动操作进入tray icon的时候发出事件. ### Event: 'drag-leave' _macOS_ 当一个拖动操作离开tray icon的时候发出事件. Emitted when a drag operation exits the tray icon. ### Event: 'drag-end' _macOS_ 当一个拖动操作在tray icon上或其它地方停止拖动的时候发出事件. ## 方法 `Tray` 模块有以下方法: **Note:** 一些方法只能在特定的os中运行,已经标明. ### `Tray.destroy()` 立刻删除 tray icon. ### `Tray.setImage(image)` * `image` [NativeImage](native-image.md) 让 `image` 与 tray icon 关联起来. ### `Tray.setPressedImage(image)` _macOS_ * `image` [NativeImage](native-image.md) 当在 macOS 上按压 tray icon 的时候, 让 `image` 与 tray icon 关联起来. ### `Tray.setToolTip(toolTip)` * `toolTip` String 为 tray icon 设置 hover text. ### `Tray.setTitle(title)` _macOS_ * `title` String 在状态栏沿着 tray icon 设置标题. ### `Tray.setHighlightMode(highlight)` _macOS_ * `highlight` Boolean 当 tray icon 被点击的时候,是否设置它的背景色变为高亮(blue).默认为 true. ### `Tray.displayBalloon(options)` _Windows_ * `options` Object * `icon` [NativeImage](native-image.md) * `title` String * `content` String 展示一个 tray balloon. ### `Tray.popUpContextMenu([menu, position])` _macOS_ _Windows_ * `menu` Menu (optional) * `position` Object (可选) - 上托位置. * `x` Integer * `y` Integer 从 tray icon 上托出 context menu . 当划过 `menu` 的时候, `menu` 显示,代替 tray 的 context menu . `position` 只在 windows 上可用,默认为 (0, 0) . ### `Tray.setContextMenu(menu)` * `menu` Menu 为这个 icon 设置 context menu . [event-emitter]: http://nodejs.org/api/events.html#events_class_events_eventemitter