我正在使用Java开发桌面应用程序。我想在系统托盘(Mac Os中称为菜单扩展)上放置一个带有上下文菜单的图标。Java 6支持在Windows和Linux中实现这一点,但在Mac Os中无法正常工作。
我见过一些应用程序在所有三个操作系统中实现了我想要的功能(例如DropBox),但我不知道它们是否是用Java制作的。
我该如何实现这个功能?
如果Java无法实现,是否有其他跨平台语言可以实现?
谢谢。
我正在使用Java开发桌面应用程序。我想在系统托盘(Mac Os中称为菜单扩展)上放置一个带有上下文菜单的图标。Java 6支持在Windows和Linux中实现这一点,但在Mac Os中无法正常工作。
我见过一些应用程序在所有三个操作系统中实现了我想要的功能(例如DropBox),但我不知道它们是否是用Java制作的。
我该如何实现这个功能?
如果Java无法实现,是否有其他跨平台语言可以实现?
谢谢。
根据文档,OS X 10.5更新1及更高版本支持使用TrayIcon
在Mac OS X上,托盘图标使用NSStatusMenus表示,并显示在标准系统菜单附件的左侧。托盘图标的java.awt.Image艺术品按照Mac OS X标准以灰度呈现在菜单附件中。
TrayIcon.displayMessage()将在托盘图标下方放置一个小型非模态对话框。仅当在非模态对话框上按下“OK”按钮时,托盘图标的ActionListener才会被触发,而关闭窗口按钮不会触发它。
多次调用TrayIcon.displayMessage()将解除以前的消息并仅保留最后一条消息。如果应用程序在调用TrayIcon.displayMessage()时不在前台,则应用程序在Dock中弹出其图标。消息窗口带有应用程序的图标,以标识触发通知的应用程序。
noah提供了此示例:
java.awt.SystemTray.getSystemTray().add(new java.awt.TrayIcon(java.awt.Toolkit.getDefaultToolkit().getImage("foo.png")));
请注意,在将图标添加到系统托盘之前,您可能需要将菜单附加到该图标。
根据文档,SWT 3.3及更高版本支持在OSX上使用TrayItem图标。
放置在系统托盘中的图标现在会在OS X中出现在状态栏中。
这个片段展示了如何创建一个菜单和图标,并将它们放在托盘中。
java.awt.SystemTray.getSystemTray().add(new java.awt.TrayIcon(java.awt.Toolkit.getDefaultToolkit().getImage("foo.png")));
- noah