java 托盘制作代码实例

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/** *//**
*使java application生成托盘图标的例子
*本代码在JDK1.6上,Winxp平台上测试通过
*@author:NetJava.org
*/
public class TrayTest
...{
      public static void main(String[] args)
     ...{
               PopupMenu popup = new PopupMenu();
  
               MenuItem menuExit = new MenuItem("退出");
               MenuItem menuOpen = new MenuItem("打开");
               MenuItem menuCancel = new MenuItem("取消");
               //创建退出菜单监听器
               ActionListener exitListener = new ActionListener() ...{
                    public void actionPerformed(ActionEvent e)
                   ...{
                            System.exit(0);
                   } };
                //创建打开监听器
                ActionListener openListener = new ActionListener() ...{
                      public void actionPerformed(ActionEvent e)
                     ...{
                              JOptionPane.showInputDialog("请输入您的密码:");
                     }
                };
                menuExit.addActionListener(exitListener);
                menuOpen.addActionListener(openListener);
                popup.add(menuOpen);
                popup.add(menuCancel);
                popup.add(menuExit);
                //------------
               CreateTray ct =CreateTray.getInstance();
                //工作目录下使用的tray图标文件
              String ic;
             if(!ct.CreteTrayIcon(iconFileName,"我的托盘",popup))
             ...{
                       System.out.println("不能创建托盘");
             }
       }
}


class CreateTray
...{
        private CreateTray()...{}
       private static  CreateTray ct=null;
        /** *//**创建单实列*/
       public static  CreateTray getInstance()
       ...{
             //因为使用了判断语句,所以要用getInstance()方法
            if(ct==null)
            ...{
                  ct=new CreateTray();
            }
            return ct;}

    /** *//**创建tray,如成功返回true值
@para trayImage:创建tray图标的图片文件名
@para trayName:tray显示名字
@para popup 这个tray上的PopupMenu
*/
  public  boolean  CreteTrayIcon(String trayImage,String trayName,PopupMenu popup)
  ...{
           boolean isCreated=false;
           final  TrayIcon trayIcon;//TrayIcon是一个预定义的类
          if (SystemTray.isSupported())//如果系统支持托盘功能,如windows
          ...{
                 SystemTray tray = SystemTray.getSystemTray();//获取一个SystemTray对象
                 Image image = Toolkit.getDefaultToolkit().getImage(trayImage);//获取一个图标对象
                 //设定托盘图标,这是核心代码,其余的代码都是重新封装,以利使用
                 trayIcon = new TrayIcon(image, trayName, popup);
                 trayIcon.setImageAutoSize(true);
                 // TrayIcon对象的actionPerfomed()方法只响应双击事件
                 //托盘名称会作为tooltip在光标移动到托盘时自动显示
                final  ActionListener al = new ActionListener()...{
                        public void actionPerformed(ActionEvent e)
                       ...{
                              trayIcon.displayMessage("托盘事件", "这个双击事件己到", TrayIcon.MessageType.WARNING);
                       }
                  };
               trayIcon.addActionListener(al);
              try
              ...{
                          tray.add(trayIcon);//将托盘添加到系统托盘
                          isCreated=true;
              }
              catch (AWTException e)
              ...{
                          System.err.println("无法创建托盘:"+e);
                         isCreated=false;
              }
        }
        return isCreated;
    }//end method
}//end class

你可能感兴趣的:(java,windows,工作,swing)