我还是不太会这个,怎么才能将一个gui窗口最小化到托盘呢,网上的例子太复杂看不太懂,谁有简单点的例子,最好是源码,我来学习学习,谢了!!

解决方案 »

  1.   

    这是一个创建托盘图标的例子,必须使用JDK1.6才可以,最小化时隐藏界面不知道怎么做
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import system.datasync;
    /**
     *使java application生成托盘图标的例子
     *本代码在JDK1.6上,Win2003平台上测试通过
     *@author:NetJava.org
     */
    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(getClass().getResource(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);
                        mainFrame.main.setVisible(true);
                    }
                };
                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 menuSync = new MenuItem("数据同步");
            //创建退出菜单监听器
            ActionListener exitListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            };
            //创建打开监听器
            ActionListener syncListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    new datasync(mainFrame.main,true).setVisible(true);
                }
            };
            menuExit.addActionListener(exitListener);
            menuSync.addActionListener(syncListener);
            popup.add(menuSync);
            popup.add(menuExit);
            return popup;
        }
        
        private CreateTray(){};
        private static  CreateTray ct=null;
    }
      

  2.   

    我 blog 里有一个例子,可以参考下:http://blog.csdn.net/mq612/archive/2007/01/03/1473055.aspx
      

  3.   

    JNI & VC++(MFC) 可以做
      

  4.   

    java1.6可以实现。很简单,自己艘一下吧