用JavaSE 6.0实现系统托盘程序

(整期优先)网络出版时间:2009-04-03
/ 1
本文详细介绍了如何使用最新发布的JavaSE 6.0中的新特性来实现系统托盘程序的开发。通过结合实际案例,讲解了如何在Java应用中开发具有系统托盘功能的软件,同时还介绍了一些在Java中进行软件开发的小技巧。
关键词 系统托盘,Java SE 6.0,SystemTray,TrayIcon

一、系统托盘简介
当前很多应用程序除了提供一个完整的主界面外,当其最小化或者启动后,在桌面右下角的系统托盘区总是有一个小图标,如金山词霸、QQ及MSN等。系统托盘是桌面上的一个特殊区域,通常在桌面的右下角。通过系统托盘,用户可以方便地访问正在运行中的那些应用程序。
使用VC++、Delphi、VB等语言来实现系统托盘非常简单,只要调用系统的API即可。但在JavaSE 6.0以前的Java中并没有提供支持系统托盘的类,访问系统托盘的唯一方法就是使用JNI直接调用系统API。但这种实现方式比较复杂,而且如果这样做,就破坏了Java的跨平台特性(因为JNI的使用依赖于操作系统平台)。
随着2006年底Java SE 6.0的发布,这个问题终于被解决了。在Java SE 6.0诸多的新特性中,包含了支持系统托盘开发的SystemTray类以及TrayIcon类。在本文后面的内容中,将为读者详细介绍如何利用这两个类来实现具有系统托盘功能的程序。
二、案例功能
本文将结合一个定时关机软件的开发来详细介绍如何在开发中利用SystemTray类以及TrayIcon类实现系统托盘程序。下面首先对该定时关机软件的功能、界面进行简单的介绍。
1.程序界面
程序运行界面如图1所示,其中主窗体使用JFrame控件,布局管理器为BorderLayout。程序的输入与显示部分采用JLabel、JTextFiled以及JSpinner控件,按钮则使用JButton控件。
当程序运行时,桌面右下角的系统托盘区域会出现表示该定时关机软件的小图标。当鼠标移动到该图标上时,会显示工具提示信息,如图2所示。