Java Swing系统托盘的使用

  1. import java.awt.*; 
  2. import java.awt.event.*; 
  3. import java.text.SimpleDateFormat; 
  4. import java.util.Date; 
  5. import java.util.TimeZone; 
  6. import java.util.TimerTask;  
  7. import javax.swing.*;  
  8. public class MyTray  
  9. TrayIcon trayIcon; // 托盘图标 
  10. SystemTray tray; // 本操作系统托盘的实例 
  11. public MyTray() 
  12. {  
  13.   final JFrame frame=new JFrame("系统托盘"); 
  14.   frame.setSize(300,200);  
  15.   frame.setVisible(true);  
  16.   tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例 
  17.   ImageIcon icon = new ImageIcon("./images/title.png"); // 将要显示到托盘中的图标 
  18.    
  19.   PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单 
  20.   final MenuItem show = new MenuItem("打开程序"); 
  21.   final MenuItem exit = new MenuItem("退出程序"); 
  22.   pop.add(show); 
  23.   pop.add(exit); 
  24.   trayIcon = new TrayIcon(icon.getImage(),"系统托盘", pop);//实例化托盘图标 
  25.   trayIcon.setImageAutoSize(true); 
  26.   //为托盘图标监听点击事件 
  27.   trayIcon.addMouseListener(new MouseAdapter()  
  28.   { 
  29.       public void mouseClicked(MouseEvent e) 
  30.       { 
  31.          if(e.getClickCount()== 2)//鼠标双击图标 
  32.          {  
  33.             // trayIcon.displayMessage("警告", "这是一个警告提示!", TrayIcon.MessageType.WARNING);  
  34.             // trayIcon.displayMessage("错误", "这是一个错误提示!", TrayIcon.MessageType.ERROR);  
  35.              //trayIcon.displayMessage("信息", "这是一个信息提示!", TrayIcon.MessageType.INFO);  
  36.              //tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标     
  37.            frame.setExtendedState(JFrame.NORMAL);//设置状态为正常 
  38.            frame.setVisible(true);//显示主窗体 
  39.           } 
  40.       } 
  41.    }); 
  42.    
  43.   //选项注册事件 
  44.   ActionListener al2=new ActionListener() 
  45.      { 
  46.        public void actionPerformed(ActionEvent e) 
  47.        { 
  48.         //退出程序 
  49.         if(e.getSource()==exit) 
  50.         { 
  51.          System.exit(0);//退出程序 
  52.         } 
  53.         //打开程序 
  54.         if(e.getSource()==show) 
  55.         { 
  56.          frame.setExtendedState(JFrame.NORMAL);//设置状态为正常 
  57.       frame.setVisible(true); 
  58.         } 
  59.        } 
  60.       }; 
  61.       exit.addActionListener(al2); 
  62.       show.addActionListener(al2); 
  63.          
  64.       try  
  65.       { 
  66.            tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中 
  67.        }  
  68.       catch(AWTException ex) 
  69.       { 
  70.            ex.printStackTrace(); 
  71.        } 
  72.     
  73.    //为主窗体注册窗体事件 
  74.    frame.addWindowListener(new WindowAdapter() 
  75.    { 
  76.     //窗体最小化事件 
  77.     public void windowIconified(WindowEvent e) 
  78.         {     
  79.             frame.setVisible(false);//使窗口不可视 
  80.             frame.dispose();//释放当前窗体资源 
  81.          }    
  82.    }); 
  83.     
  84.     
  85.    //加个定时监听,每到什么时候就提醒 
  86.    try 
  87.     { 
  88.     java.util.Timer timer = new java.util.Timer(); 
  89.     timer.schedule(new TimerTask() { 
  90.         public void run() {   
  91.          String eet="2012-08-28 17:39:30"
  92.          String str=thisTime().replace("-","").replace(":","").replace(" ",""); 
  93.          String str1=eet.replace("-","").replace(":","").replace(" ",""); 
  94.          int et=Integer.parseInt(str.substring(4)); 
  95.          int et1=Integer.parseInt(str1.substring(4)); 
  96.          int t=0
  97.          if(et1-et<=0
  98.          { 
  99.              t++; 
  100.              if(t<2
  101.              { 
  102.                 trayIcon.displayMessage("警告", "这是一个警告提示!", TrayIcon.MessageType.WARNING); 
  103.              } 
  104.          } 
  105.         } 
  106.     }, 0, 1000);  
  107.     //监听结束 
  108.     } 
  109.     catch(Exception ex) 
  110.     { 
  111.         System.out.println("Timer exception");  
  112.     }  
  113.      public  String thisTime() 
  114.         { 
  115.            String result=""
  116.            SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 
  117.            TimeZone timeZoneChina = TimeZone.getTimeZone("Asia/Shanghai");//获取中国的时区 
  118.            df1.setTimeZone(timeZoneChina);//设置系统时区 
  119.            String mctime=df1.format(new Date()); 
  120.            result=mctime;  
  121.            return result; 
  122.         } 
  123.      public static void main(String[] args)  
  124.      { 
  125.       new MyTray(); 
  126.      } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值