我要把一个窗口最小化时添加到右下角的托盘,最小化的事件是这样写样的,窗口默认大小时都没问题,可是当程序最大化时,再最小化无法到托盘,怎么解决????????最小化事件    addWindowStateListener(new WindowStateListener() {   
        public void windowStateChanged(WindowEvent e) {             if(e.getOldState() != e.getNewState()){
                switch (e.getNewState()) {                 case ICONIFIED:                 
                 tray();
                 break;
                }
            }          }   
    });

解决方案 »

  1.   

    LZ太新潮了JDK1.6新特性都用上了,不过说实话不太清楚怎么回事,我感觉可能是ICONIFIED的问题,下面是JDK对ICONIFIED的定义,normal是不是不包括最大化状态啊,所以当窗口最大化到最小化的时候不会返回ICONIFIED啊
       /**
         * The window iconified event. This event is delivered when
         * the window has been changed from a normal to a minimized state.
         * For many platforms, a minimized window is displayed as
         * the icon specified in the window's iconImage property.
         * @see java.awt.Frame#setIconImage
         */
         
      

  2.   

    http://download.csdn.net/source/976374
    这是上大学的时候写的一个 东西 拿出来晒晒 带托盘的截屏工具 java实现很简单
      

  3.   

    是SWING写的吗????????
      

  4.   

    如果是Swing的话我这里有以前写的源码
      

  5.   

    是Swing ,其余都写好了,只是这个问题到现在解决不了
    你的源码涉及到这个问题吗?
      

  6.   

    public void init(){
    pop=new PopupMenu();
    open=new MenuItem("打开主面板");
    close=new MenuItem("退出");
    pop.add(open);
    pop.add(close);
    Image icon = Toolkit.getDefaultToolkit().getImage("image/tuopan.jpg");
    tray = SystemTray.getSystemTray(); 
    if (SystemTray.isSupported()){
     trayicon = new  TrayIcon(icon, "图书管理系统2010" ,pop); 
     trayicon.setImageAutoSize(true);
     trayicon.addMouseListener(new MouseAdapter(){
    public   void  mouseClicked(MouseEvent e) { 
    if (e.getClickCount()== 2 ){  
    setVisible(true);   

    }
     });
     try {
     tray.add(trayicon);
     } catch (Exception e) {
     JOptionPane.showMessageDialog(null, "系统不支持托盘");
     }
    }
    else{
    System.exit(0);
    }
    close.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    System.exit(0);
    }

    });
    open.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    setVisible(true);
    }
    });

    }