java中生成托盘(tray)图标的简单方法

 
托盘图标化是winOS上常用的一项技术,但在JDK6之前,javaer想实现这个功能,必须调用本地的类库来做,现在,在jdk6中,你可以轻松的做到
 
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 *使java application生成托盘图标的例子
 *本代码在JDK1.6上,Win2003平台上测试通过
 *@author:NetJava.cn
 */
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;
}
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭