系统托盘
现在有很多程序除了提供了一个完整的主界面外,在它最小化或者启动后在右下角的系统托盘区总是有一个小图标,如金山词霸、QQ和MSN等。图5显示了一台计算机的系统托盘里的图标。
|
图5 系统托盘 |
如果使用C++、Delphi(Pascal)等语言实现这个功能非常简单,只要调用一下系统API即可,但在以前版本(Java SE 5以前)的Java SE中Sun并未提供访问系统托盘的类,在那时使用Java访问系统托盘的唯一方法就是使用JNI直接调用系统API,但这种方法实现比较复杂,而且如果这样做,就破坏了Java的跨平台特性(除非你为每一个操作系统平台都做一个这样的类)。Java的这个缺陷缓和终于在Java SE 6中得到弥补。在java.awt包中提供了一个SystemTray类可以直接访问系统托盘。下面的代码演示了一个简单的实现。
| import javax.swing.*; import java.awt.*; public class MyTray { public static void main(String args[]) { // 判断当前操作系统是否支持系统托盘 // 最好加上这个判断,否则这个程序可能在其它操作系统上无法正常工作 if (SystemTray.isSupported()) { // 通过静态方法getSystemTray()得到系统托盘 SystemTray tray = SystemTray.getSystemTray(); // 装载托盘图象 Image image = Toolkit.getDefaultToolkit().getImage("tray.gif"); // 为这个托盘加一个弹出菜单 PopupMenu popup = new PopupMenu(); MenuItem item = new MenuItem("我的菜单"); popup.add(item); // 为这个托盘加一个提示信息 TrayIcon trayIcon = new TrayIcon(image, "提示信息", popup); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println("无法向这个托盘添加新项: " + e); } } else { System.err.println("无法使用系统托盘!"); } } } |
在运行上面的程序之前,tray.gif一定要放到当前目录,如果放到其它的目录,要在程序中指明。图6是程序运行结果。最左侧的五彩光盘图标就是本程序加入了。
![]() 图6 运行结果 |
如果多次调用tray.add(trayIcon),可以在一个程序中向系统托盘添加多个图标。但要注意,图象可以使用一个Image对象,但弹出菜单要为每一个图标建一个,如果不建,就设为null。如:
| TrayIcon trayIcon1 = new TrayIcon(image, "提示信息1", null); TrayIcon trayIcon2 = new TrayIcon(image, "提示信息2", null); TrayIcon trayIcon3 = new TrayIcon(image, "提示信息3", null); tray.add(trayIcon1); tray.add(trayIcon2); tray.add(trayIcon3); |
图7为显示界面图
|
图7 |
Java SE 6还为我们提供了3种提示信息,它们是警告、错误和信息。如使用如下语句添加提示信息。
添加警告提示:
| trayIcon.displayMessage("警告", "这是一个警告提示!", TrayIcon.MessageType.WARNING); |
![]() 图8 警告提示 |
添加错误提示:
| trayIcon.displayMessage("错误", "这是一个错误提示!", TrayIcon.MessageType.ERROR); |
![]() 图9 错误提示 |
添加信息提示:
| trayIcon.displayMessage("信息", "这是一个信息提示!", TrayIcon.MessageType.INFO); |
![]() 图10 信息提示 |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5571篇文章)
- Java编程开发手册 (8196篇文章)
- 125条常见的java面试笔试题大汇总 (23470次浏览)
- 十四种Java开发工具点评 (16011次浏览)
- JAVA中配置环境变量设置方法大全 (14586次浏览)
- 论Java外观模式 (1091次浏览)
- 英文打字练习 (718次浏览)
- Java编程十大典型问题详解(1) (637次浏览)
- Java路径问题最终解决方案 (598次浏览)
- Ruby,Java的劲敌 (582次浏览)
- Java学习从入门到精通(附FAQ)2 (579次浏览)
- JAVA高手解析XML配置文件的读取操作 (568次浏览)







