JAVA6新特性之---java桌面应用中生成托盘(tray)图标的简单方法

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 *使java application生成托盘图标的例子
 *本代码在JDK1.6上,Win2003平台上测试通过
 *@author:NetJava.org
 */
public class CreateTray
{
    /**创建单实列*/
  public static  CreateTray instance(){
      if(null==ct){
          ct=new CreateTray();
      }
      return ct;
  }
   
    //测试
    public static void main(String[] args)
    {
       CreateTray ct =instance();
       //工作目录下使用的tray图标文件
       String iconFileName="netjava.gif";
        PopupMenu pop=ct.createPopup();
        if(!ct.CreteTrayIcon(iconFileName,"我的托盘",pop)){
            System.out.println("不能创建托盘");
  }
}

    /**
    *创建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;
      if (SystemTray.isSupported()) {
            SystemTray tray = SystemTray.getSystemTray();
            Image image = Toolkit.getDefaultToolkit().getImage(trayImage);
            trayIcon = new TrayIcon(image, trayName, popup);
            trayIcon.setImageAutoSize(true);
            //创建一个Action监听器:左键双击事件
           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;
    }
   
    /**
     *创建这个tray上的右键弹出式菜单
     */
  public  PopupMenu createPopup(){
             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);
            return popup;
    }
   
 private CreateTray(){};
 private static  CreateTray ct=null;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值