参考资料:老紫竹的博客:
http://blog.youkuaiyun.com/java2000_net;JDK6API
- package toolkit;
- import java.awt.AWTException;
- import java.awt.Image;
- import java.awt.MenuItem;
- import java.awt.PopupMenu;
- import java.awt.SystemTray;
- import java.awt.Toolkit;
- import java.awt.TrayIcon;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JOptionPane;
- /**
- * JDK6新特性:最小化至托盘
- */
- public class ToolkitDemo {
- Toolkit toolkit;
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- ToolkitDemo demo=new ToolkitDemo();
- demo.setMenu();
- }
- public void setMenu(){
- //不支持系统托盘的平台,此时会抛出UnsupportedOperationException的异常
- if (!SystemTray.isSupported()) {
- JOptionPane.showMessageDialog(null, "不支持系统托盘");
- }else{
- SystemTray tray = SystemTray.getSystemTray();//获取表示桌面托盘区的 SystemTray 实例
- toolkit = Toolkit.getDefaultToolkit();//获取默认工具包
- Image image = toolkit.getImage("src/images/046.gif");
- PopupMenu menu = new PopupMenu();//此类实现能够在组件中的指定位置上动态弹出的菜单
- MenuItem closemenu = new MenuItem("退出");
- this.closeActionPerformed(closemenu);
- menu.add(closemenu);
- /**
- * 表示可以添加到系统托盘的托盘图标。
- * TrayIcon 可以包含工具提示(文本)、图像、弹出菜单和一组与之关联的侦听器
- * **/
- TrayIcon icon = new TrayIcon(image, "系统托盘", menu);
- icon.setImageAutoSize(true);//设置自动调整大小的属性
- try {
- tray.add(icon);
- } catch (AWTException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- }
- /**
- * 关闭托盘时触发事件
- * **/
- private void closeActionPerformed(MenuItem menu){
- menu.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int isExit=JOptionPane.showConfirmDialog(null, "您真的要退出吗?","退出询问",JOptionPane.YES_NO_OPTION);
- if(isExit==JOptionPane.YES_OPTION){
- toolkit.beep();// 发出一个音频嘟嘟声
- System.exit(0);
- }
- }
- });
- }
- }