JDK6 新增窗口最小化至托盘

Java做的应用程序,过去要在win平台上实现最小化时在系统托盘区域产生一个图标,必须得用JNI调用OS的库函数才行。但是在JDK6中,终于加入了相应的API。不多说,例子如下:

import java.awt.AWTException;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class MinExp extends JFrame {
 
 /**
  * Declare private variables
  */
 private JButton testBtn;
    private SystemTray systemTray;
    private Image icon;
    private TrayIcon trayIcon;
    private JPanel backGroud;
   
    /**
     * Constructor
     */
 public MinExp()
 {
  testBtn = new JButton("Minimize");
  backGroud = new JPanel();
  
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setSize(200, 200);
  
  testBtn.addMouseListener(new MouseAdapter(){
   
   public void mouseClicked(MouseEvent evt)
   {
    setExtendedState(JFrame.ICONIFIED);
          dispose();
          systemTray= SystemTray.getSystemTray();
          try{
           icon = new ImageIcon(this.getClass().getClassLoader().getResource("world.jpg")).getImage();
           trayIcon = new TrayIcon(icon, "WorldClock");
           systemTray.add(trayIcon);

          }catch(AWTException e)
          {
           e.printStackTrace();
          }
          trayIcon.addMouseListener(new MouseAdapter() {
              public void mouseClicked(MouseEvent e) {
               if (e.getClickCount() == 2)
               {
                setExtendedState(JFrame.NORMAL);
                systemTray.remove(trayIcon);
               }
               setVisible(true);
              }
          });
   }
  });
  
  backGroud.add(testBtn);
  this.add(backGroud);
 }

 public static void main(String[] args) {
  MinExp mep = new MinExp();
  mep.setVisible(true);
 }
}

TrayIcon就是新加的托盘图标类。

在mouseClicked事件处理中,首先将原窗口给销毁掉,取得当前OS的系统托盘区域的实例systemTray.

创建新的TrayIcon,然后把该TrayIcon加到systemTray中去。

同时给这个TrayIcon加上事件侦听,一旦被click,设置原窗口正常化,并把该图标从系统托盘区域去除。

关键词:TrayIcon, systemTray, ImageIcon.

PS: 在生成图标的时候,PATH一定要注意。这里用this.getClass().getClassLoader().getResource()去jar的根目录寻找。

目录结构:

jar ---- image.JPG

     ---- com/zrc/...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值