Java 查找属于某个框架的所有模态对话框

Java 查找属于某个框架的所有模态对话框,java,swing,awt,Java,Swing,Awt,我需要能够告诉如果有任何模态对话框在我的应用程序中打开。有没有办法做到这一点 解决方案 好的,根据公认的答案,这就是我想做的,完成我需要的: Window[] wins : myMainFrame.getOwnedWindows(); for(Window w : wins) { if(w instanceof JDialog) { JDialog jd = (JDialog)w; if(jd.isModal() && jd.isVisible()) {

我需要能够告诉如果有任何模态对话框在我的应用程序中打开。有没有办法做到这一点

解决方案 好的,根据公认的答案,这就是我想做的,完成我需要的:

Window[] wins : myMainFrame.getOwnedWindows();
for(Window w : wins) {
  if(w instanceof JDialog) {
    JDialog jd = (JDialog)w;
    if(jd.isModal() && jd.isVisible()) {
      // back out of current operation (return null in my case)
      return null;
    }
}
也许您正在寻找的是调用的
getOwnedWindows()
,所有从Window派生的类都将具有此方法,包括JFrame和JDialog


但我同意更多的背景会有所帮助

多了解一点情况会有助于更快地获得更好的帮助。不确定在这一点上提供什么其他情况。我有一个Swing应用程序,我需要知道它当前是否有任何打开的模式对话框。我想@dic19想知道为什么这是必要的,因为你的问题可能是你问“如何解决这个代码问题”当最好的解决方案是使用完全不同的方法时。老实说,我在这个问题上避免了太多细节,因为我不希望有人告诉我应该以不同的方式来做:)(这将是一个相当长的解释,以满足所有会告诉我以不同方式来做的人)。我已经确定这是最简单、最快捷的解决方案。通常我都支持比我更好的想法,但这是针对一个非常大的企业应用程序,我无法访问所有的想法。好吧,我已经为您的原始问题提供了一个潜在的解决方案,您可以根据需要测试或忽略它。但不要太匆忙,以免听到其他可能的方法。有一些非常聪明的人在这里回答问题,包括一些专业的程序员,你可能会惊喜地发现,不同的方式实际上更好。请参阅我对原始问题的编辑,以获得对我有效的完整解决方案,谢谢!