TrayIcon
对象表示可以添加到系统托盘
的托盘图标。一个TrayIcon
可以具有工具提示(文本)、图像、弹出菜单以及与之关联的一组监听器。
一个TrayIcon
可以生成各种MouseEvents
,并支持添加相应的监听器以接收这些事件的通知。 TrayIcon
会自行处理其中的一些事件。例如,默认情况下,当在TrayIcon
上执行鼠标右键单击时,它会显示指定的弹出菜单。当鼠标悬停在TrayIcon
上时,工具提示会显示(此行为取决于平台)。
注意:当MouseEvent
分派给其注册的监听器时,其component
属性将被设置为null
。(参见ComponentEvent.getComponent()
)source
属性将被设置为此TrayIcon
。(参见EventObject.getSource()
)
注意:一个行为良好的TrayIcon
实现将为显示弹出菜单和选择托盘图标分配不同的手势。
一个TrayIcon
可以生成一个ActionEvent
。在某些平台上,当用户使用鼠标或键盘选择托盘图标时,会触发此事件。
如果安装了SecurityManager,则必须授予AWTPermission accessSystemTray
权限才能创建TrayIcon
。否则,构造函数将抛出SecurityException。
查看SystemTray
类概述,了解如何使用TrayIcon
API的示例。
- 实现注意事项:
-
当设置
apple.awt.enableTemplateImages
属性时,所有与此类的实例关联的图像将被本机桌面系统视为模板图像。这意味着所有颜色信息都将被丢弃,并且图像将自动适应以在桌面主题和/或颜色更改时可见。此属性仅影响MacOSX。 - 自JDK版本:
- 1.6
- 参见:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
消息类型确定消息标题栏中将显示哪个图标,以及消息显示时可能产生的系统声音。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addActionListener
(ActionListener listener) 将指定的动作监听器添加到此TrayIcon
以接收ActionEvent
。void
addMouseListener
(MouseListener listener) 将指定的鼠标监听器添加到此TrayIcon
以接收鼠标事件。void
addMouseMotionListener
(MouseMotionListener listener) 将指定的鼠标监听器添加到此TrayIcon
以接收鼠标移动事件。void
displayMessage
(String caption, String text, TrayIcon.MessageType messageType) 在托盘图标附近显示一个弹出消息。返回此托盘图标触发的动作事件的命令名称。返回在此TrayIcon
上注册的所有动作监听器的数组。getImage()
返回此TrayIcon
当前使用的图像。返回在此TrayIcon
上注册的所有鼠标监听器的数组。返回在此TrayIcon
上注册的所有鼠标移动监听器的数组。返回与此TrayIcon
关联的弹出菜单。getSize()
返回托盘图标在系统托盘中占用的像素空间大小。返回与此TrayIcon
关联的工具提示字符串。boolean
返回自动调整大小属性的值。void
removeActionListener
(ActionListener listener) 移除指定的动作监听器。void
removeMouseListener
(MouseListener listener) 移除指定的鼠标监听器。void
removeMouseMotionListener
(MouseMotionListener listener) 移除指定的鼠标移动监听器。void
setActionCommand
(String command) 为此托盘图标触发的动作事件设置命令名称。void
设置此TrayIcon
的图像。void
setImageAutoSize
(boolean autosize) 设置自动调整大小属性。void
setPopupMenu
(PopupMenu popup) 设置此TrayIcon
的弹出菜单。void
setToolTip
(String tooltip) 设置此TrayIcon
的工具提示字符串。
-
Constructor Details
-
TrayIcon
使用指定的图像创建一个TrayIcon
。- 参数:
-
image
- 要使用的Image
- 抛出:
-
IllegalArgumentException
- 如果image
为null
-
UnsupportedOperationException
- 如果当前平台不支持系统托盘 -
HeadlessException
- 如果GraphicsEnvironment.isHeadless()
返回true
-
SecurityException
- 如果未授予accessSystemTray
权限 - 参见:
-
TrayIcon
使用指定的图像和工具提示文本创建一个TrayIcon
。在某些平台上,工具提示可能不可见。- 参数:
-
image
- 要使用的Image
-
tooltip
- 要用作工具提示文本的字符串;如果值为null
,则不显示工具提示 - 抛出:
-
IllegalArgumentException
- 如果image
为null
-
UnsupportedOperationException
- 如果当前平台不支持系统托盘 -
HeadlessException
- 如果GraphicsEnvironment.isHeadless()
返回true
-
SecurityException
- 如果未授予accessSystemTray
权限 - 参见:
-
TrayIcon
使用指定的图像、工具提示和弹出菜单创建一个TrayIcon
。在某些平台上,工具提示可能不可见。- 参数:
-
image
- 要使用的Image
-
tooltip
- 要用作工具提示文本的字符串;如果值为null
,则不显示工具提示 -
popup
- 要用作托盘图标弹出菜单的菜单;如果值为null
,则不显示弹出菜单 - 抛出:
-
IllegalArgumentException
- 如果image
为null
-
UnsupportedOperationException
- 如果当前平台不支持系统托盘 -
HeadlessException
- 如果GraphicsEnvironment.isHeadless()
返回true
-
SecurityException
- 如果未授予accessSystemTray
权限 - 参见:
-
-
Method Details
-
setImage
设置此TrayIcon
的图像。之前的托盘图标图像将被丢弃,而不调用Image.flush()
方法 — 您需要手动调用它。如果图像代表动画图像,则将自动播放动画。
有关显示图像大小的详细信息,请参见
setImageAutoSize(boolean)
属性。使用当前正在使用的相同图像调用此方法不会产生任何效果。
- 参数:
-
image
- 要使用的非空Image
- 抛出:
-
NullPointerException
- 如果image
为null
- 另请参阅:
-
getImage
返回用于此TrayIcon
的当前图像。- 返回:
- 图像
- 另请参阅:
-
setPopupMenu
设置此TrayIcon
的弹出菜单。如果popup
为null
,则不会将任何弹出菜单与此TrayIcon
关联。请注意,此
popup
在设置到托盘图标之前或之后不得添加到任何父级。如果将其添加到某个父级,则可能会从该父级中删除popup
。popup
只能设置在一个TrayIcon
上。在多个TrayIcon
上设置相同的弹出菜单将导致IllegalArgumentException
。注意: 一些平台可能不支持在用户右键单击托盘图标时显示用户指定的弹出菜单组件。在这种情况下,可能不会显示任何菜单,或者在某些系统上,可能会显示菜单的本机版本。
- 参数:
-
popup
- 一个PopupMenu
或null
以删除任何弹出菜单 - 抛出:
-
IllegalArgumentException
- 如果popup
已经设置为另一个TrayIcon
- 另请参阅:
-
getPopupMenu
返回与此TrayIcon
关联的弹出菜单。- 返回:
-
弹出菜单或
null
(如果不存在) - 另请参阅:
-
setToolTip
设置此TrayIcon
的工具提示字符串。当鼠标悬停在图标上时,工具提示将自动显示。在某些平台上,工具提示可能不可见。将工具提示设置为null
将删除任何工具提示文本。在显示时,工具提示字符串可能会在某些平台上被截断;可以显示的字符数取决于平台。- 参数:
-
tooltip
- 工具提示的字符串;如果值为null
,则不显示工具提示 - 另请参阅:
-
getToolTip
返回与此TrayIcon
关联的工具提示字符串。- 返回:
-
工具提示字符串或
null
(如果不存在) - 另请参阅:
-
setImageAutoSize
public void setImageAutoSize(boolean autosize) 设置自动大小属性。自动大小确定托盘图像是否自动调整大小以适应分配给图像的空间。默认情况下,自动大小属性设置为false
。如果自动大小为
false
,并且图像大小与托盘图标空间不匹配,则图像将按原样绘制在该空间内 — 如果大于分配的空间,则将被裁剪。如果自动大小为
true
,则图像将被拉伸或缩小以适应托盘图标空间。- 参数:
-
autosize
-true
以自动调整图像大小,否则为false
- 另请参阅:
-
isImageAutoSize
public boolean isImageAutoSize()返回自动大小属性的值。- 返回:
-
如果图像将自动调整大小,则为
true
,否则为false
- 另请参阅:
-
addMouseListener
添加指定的鼠标监听器以接收来自此TrayIcon
的鼠标事件。使用null
值调用此方法不会产生任何效果。注意: (从
TrayIcon
接收的)MouseEvent
的坐标是相对于屏幕而不是TrayIcon
的。注意: 不支持
MOUSE_ENTERED
和MOUSE_EXITED
鼠标事件。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 鼠标监听器 - 另请参阅:
-
removeMouseListener
移除指定的鼠标监听器。使用null
或无效值调用此方法不会产生任何效果。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 鼠标监听器 - 另请参阅:
-
getMouseListeners
返回在此TrayIcon
上注册的所有鼠标监听器的数组。- 返回:
-
在此
TrayIcon
上注册的所有MouseListeners
的数组,如果当前未注册任何鼠标监听器,则返回空数组 - 另请参阅:
-
addMouseMotionListener
添加指定的鼠标移动监听器以接收来自此TrayIcon
的鼠标移动事件。使用null
值调用此方法不会产生任何效果。注意: (从
TrayIcon
接收的)MouseEvent
的坐标是相对于屏幕而不是TrayIcon
的。注意: 不支持
MOUSE_DRAGGED
鼠标事件。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 鼠标监听器 - 另请参阅:
-
removeMouseMotionListener
移除指定的鼠标移动监听器。使用null
或无效值调用此方法不会产生任何效果。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 鼠标监听器 - 另请参阅:
-
getMouseMotionListeners
返回在此TrayIcon
上注册的所有鼠标移动监听器的数组。- 返回:
-
在此
TrayIcon
上注册的所有MouseInputListeners
的数组,如果当前未注册任何鼠标监听器,则返回空数组 - 另请参阅:
-
getActionCommand
返回此托盘图标触发的动作事件的命令名称。- 返回:
-
操作命令名称,如果不存在则返回
null
- 参见:
-
setActionCommand
设置此托盘图标触发的动作事件的命令名称。默认情况下,此动作命令设置为null
。- 参数:
-
command
- 用于设置托盘图标动作命令的字符串。 - 参见:
-
addActionListener
向此托盘图标添加指定的动作监听器以接收来自此TrayIcon
的ActionEvent
。通常在用户使用鼠标或键盘选择托盘图标时会触发动作事件。生成动作事件的条件取决于平台。使用
null
值调用此方法不会产生任何效果。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 动作监听器 - 参见:
-
removeActionListener
移除指定的动作监听器。使用null
或无效值调用此方法不会产生任何效果。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
listener
- 动作监听器 - 参见:
-
getActionListeners
返回在此TrayIcon
上注册的所有动作监听器的数组。- 返回:
-
在此
TrayIcon
上注册的所有ActionListeners
,如果当前没有注册任何动作监听器,则返回空数组 - 参见:
-
displayMessage
在托盘图标附近显示一个弹出消息。消息将在一段时间后消失,或者用户点击它。点击消息可能会触发一个ActionEvent
。标题或文本可以是
null
,但如果两者都是null
,则会抛出NullPointerException
。在某些平台上,显示的标题或文本字符串可能会被截断;可以显示的字符数取决于平台。注意: 一些平台可能不支持显示消息。
- 参数:
-
caption
- 显示在文本上方的标题,通常为粗体;可以是null
-
text
- 特定消息显示的文本;可以是null
-
messageType
- 指示消息类型的枚举 - 抛出:
-
NullPointerException
- 如果caption
和text
都是null
-
getSize
返回系统托盘中托盘图标占用的像素空间大小。对于尚未添加到系统托盘的托盘图标,返回的大小等于SystemTray.getTrayIconSize()
的结果。- 返回:
- 托盘图标的大小,以像素为单位
- 参见:
-