Java Swing 托盘

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.TimerTask; 
import javax.swing.*; 
public class MyTray 
{
TrayIcon trayIcon; // 托盘图标
 SystemTray tray; // 本操作系统托盘的实例
 public MyTray()
 { 
  final JFrame frame=new JFrame("系统托盘");
  frame.setSize(300,200); 
  frame.setVisible(true); 
  tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例
  ImageIcon icon = new ImageIcon("./images/title.png"); // 将要显示到托盘中的图标
  
  PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
  final MenuItem show = new MenuItem("打开程序");
  final MenuItem exit = new MenuItem("退出程序");
  pop.add(show);
  pop.add(exit);
  trayIcon = new TrayIcon(icon.getImage(),"系统托盘", pop);//实例化托盘图标
  trayIcon.setImageAutoSize(true);
  //为托盘图标监听点击事件
  trayIcon.addMouseListener(new MouseAdapter() 
  {
      public void mouseClicked(MouseEvent e)
      {
         if(e.getClickCount()== 2)//鼠标双击图标
         { 
        	// trayIcon.displayMessage("警告", "这是一个警告提示!", TrayIcon.MessageType.WARNING); 
        	// trayIcon.displayMessage("错误", "这是一个错误提示!", TrayIcon.MessageType.ERROR); 
        	 //trayIcon.displayMessage("信息", "这是一个信息提示!", TrayIcon.MessageType.INFO); 
        	 //tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标    
           frame.setExtendedState(JFrame.NORMAL);//设置状态为正常
           frame.setVisible(true);//显示主窗体
          }
      }
   });
  
  //选项注册事件
  ActionListener al2=new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
       {
        //退出程序
        if(e.getSource()==exit)
        {
         System.exit(0);//退出程序
        }
        //打开程序
        if(e.getSource()==show)
        {
         frame.setExtendedState(JFrame.NORMAL);//设置状态为正常
      frame.setVisible(true);
        }
       }
      };
      exit.addActionListener(al2);
      show.addActionListener(al2);
        
      try 
      {
           tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中
       } 
      catch(AWTException ex)
      {
           ex.printStackTrace();
       }
   
   //为主窗体注册窗体事件
   frame.addWindowListener(new WindowAdapter()
   {
    //窗体最小化事件
    public void windowIconified(WindowEvent e)
        {    
            frame.setVisible(false);//使窗口不可视
            frame.dispose();//释放当前窗体资源
         }   
   });
   
   
   //加个定时监听,每到什么时候就提醒
   try
	{
    java.util.Timer timer = new java.util.Timer();
    timer.schedule(new TimerTask() {
        public void run() {  
   		 String eet="2012-08-28 17:39:30";
   		 String str=thisTime().replace("-","").replace(":","").replace(" ","");
   		 String str1=eet.replace("-","").replace(":","").replace(" ","");
   		 int et=Integer.parseInt(str.substring(4));
   		 int et1=Integer.parseInt(str1.substring(4));
   		 int t=0;
   		 if(et1-et<=0)
   		 {
   			 t++;
   			 if(t<2)
   			 {
   		        trayIcon.displayMessage("警告", "这是一个警告提示!", TrayIcon.MessageType.WARNING);
   			 }
   		 }
        }
    }, 0, 1000); 
    //监听结束
	}
	catch(Exception ex)
	{
		System.out.println("Timer exception"); 
	} 
 }
	 public  String thisTime()
		{
		   String result="";
		   SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		   TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取中国的时区
		   df1.setTimeZone(timeZoneChina);//设置系统时区
		   String mctime=df1.format(new Date());
		   result=mctime; 
		   return result;
	    }
	 public static void main(String[] args) 
	 {
	  new MyTray();
	 }
}

 

转载于:https://www.cnblogs.com/mr-boy/p/4180495.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值