您的位置:首页 > 其它

使用J2SE6中的SystemTray和TrayIcon实现系统托盘

2011-12-22 13:24 344 查看
 
以前在做系统托盘功能时,基本都是使用开源的trayicon实现的,因为J2SE中没有提供这样的功能。但是从J2SE6开始,已经支持了。在java.awt中增加了俩个类,一个是SystemTray,另一个是TrayIcon。
每个java应用程序中,都会有一个缺省的SystemTray实例,可以通过SystemTray.getSystemTray()方法得到SystemTray实例。而TrayIcon才是真正的系统托盘内容,也就是说,TrayIcon是通过SystemTray才添加到系统托盘中的。系统托盘中的其他内容,比如菜单、图片、提示能都是通过TrayIcon封装的。
添加一个系统托盘,可以这样调用:
SystemTray tray = SystemTray.getSystemTray();
tray.add(trayIcon);
而删除一个系统托盘,就可以这样:
SystemTray.getSystemTray().remove(trayIcon);
 
下面给出一个基于JFrame对应用界面程序实现最小化时隐藏到系统托盘的功能:

import java.awt.BorderLayout;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JButton;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class SysTrayFrame extends JFrame {

    private TrayIcon trayIcon;

    BorderLayout borderLayout1 = new BorderLayout();

    JPanel root = new JPanel();

    JButton exit = new JButton();

    public SysTrayFrame() {

        try {

            jbInit();

            pack();

            this.initTrayIcon();

        } catch (Exception exception) {

            exception.printStackTrace();

        }

    }

    private void jbInit() throws Exception {

        this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);

        this.addWindowListener(new WindowAdapter(){

            //捕获窗口关闭事件

            public void windowClosing(WindowEvent e){           

                if(SystemTray.isSupported()){

                    setVisible(false);

                    minimizeToTray();

                }

                else{

                    System.exit(0);

                }

            }

            //捕获窗口最小化事件

            public void windowIconified(WindowEvent e){

                if(SystemTray.isSupported()){

                    setVisible(false);

             
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息