通过一个Jbtton,点击一下弹出一个Jframe,弹出n个,然后再关闭m个Jframe(可通过dispose()、点击右上角的X按钮、或其它任何方法),最后如何判断还有几个jframe存在?尤其是关闭最后一个jframe后如何返回0??
不能用static int i的方法计数,我想问问有没有java函数或接口提供这种功能??我需要相关代码。

解决方案 »

  1.   

    方法一,listen窗口关闭事件。每关闭一个窗口就触发了该窗口的关闭事件,那么你可以i--,最后就可以得出还有多少个窗口存在。当然,每启动一个窗口,你需要将记录i增减的类的实例传入。
    如代码,大略:
    public class Frame1 extends JFrame
    {
        Btn btn;
        public Frame1(Btn b)
        {
            btn = b;
            this.addWindowListener(new WindowAdapter(){
              ... windowClosing(....)
      {
                   btn.closeWindow();
               }
            });
        }
    }public class Btn
    {
        int i = 0;
      
      //...
      
        public synchronized void click()
        {
            Frame1 f1 = new Frame1(this);
            f1.show();
            i++;
        }
        
        public synchronized void closeWindow()
        {
           //.....
           i--;
           if(i == 0) //当关闭了最后一个窗口你要做的事情
           {
              //...
           }
        }
    }
      

  2.   

    int count = 0;
    for (Frame f : Frame.getFrames()) {
    if (f.isVisible()) {
    count++;
    }
    }
      

  3.   

    都说了不能用计数器,因为可能不是一个btn弹出jframe,而是多个btn,甚至是toolbar,menuitem等方法弹出jframe,用计数器就很麻烦了gtlang78()的方法好像可以用,但如果换了Jframe,jdialog,JInternalFrame等,好像就不行了吧。我想要的是通用一点的