在Java应用程序中是否有一种方法可以列出屏幕上可见的所有当前打开/活动(我不确定此处的术语)JFrames
?谢谢你的帮助。
答案 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()
将完成您的工作。
返回此应用程序创建的所有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()
。