在Java应用程序中获取任何/所有活动JFrame?

时间:2011-09-09 16:13:45

标签: java swing list methods jframe

在Java应用程序中是否有一种方法可以列出屏幕上可见的所有当前打开/活动(我不确定此处的术语)JFrames?谢谢你的帮助。

3 个答案:

答案 0 :(得分:26)

Frame.getFrames()返回所有帧的数组。

正如@mKorbel所提到的那样,Window.getWindows()将返回所有窗口 - 因为Frame(& JFrame)扩展Window将提供所有帧,然后一些。有必要对它们进行迭代以发现当前可见的那些。

答案 1 :(得分:0)

我同意Stefan Reich的评论。

一个非常有用的方法是Window.getOwnedWindows() ...和一个有用的上下文(如果不是必需的话)是TDD(测试驱动开发):在(集成)测试中,你有各种{{ 1}}显示对象(Window等),如果在测试正常结束之前出现问题(或者即使它正常完成),你经常会想要在测试中清理掉从属窗口 - 代码。这样的东西(在JUnit中):

JDialog

答案 2 :(得分:0)

Frame.getFrames()将完成您的工作。

From oracle Doc:

  

返回此应用程序创建的所有Frame的数组。如果被叫   从小程序中,该数组仅包含可访问的框架   小应用程序。

一个简单的例子:

//all frames to a array
Frame[] allFrames = Frame.getFrames();

//Iterate through the allFrames array
for(Frame fr : allFrames){
    //uncomment the below line to see frames names and properties/atr.
    //System.out.println(fr);        

    //to get specific frame name
    String specificFrameName = fr.getClass().getName();

    //if found frame that I want I can close or any you want
    //GUIS.CheckForCustomer is my specific frame name that I want to close.
    if(specificFrameName.equals("GUIS.CheckForCustomer")){
        //close the frame
        fr.dispose();
    }
}

您也可以像其他人一样使用Window.getWindows()