Java 如何获取应用程序的可见窗口数?
或者更确切地说: 我需要知道在窗口关闭事件中,是否还有其他窗口仍然可见 否则,将调用系统退出(0)。尝试Java 如何获取应用程序的可见窗口数?,java,swing,window,awt,jframe,Java,Swing,Window,Awt,Jframe,或者更确切地说: 我需要知道在窗口关闭事件中,是否还有其他窗口仍然可见 否则,将调用系统退出(0)。尝试 if(Frame.getFrames().length == 0) { // work here. } (Frame是java.awt.Frame,它是JFrame的父级,因此您也将捕获它们)。1)我需要知道关于窗口关闭事件的信息 有和 2) 如果任何其他窗口仍然可见。 您可以通过使用Window[]wins=Window.getWindows()获取的数量用于测试其可见性或通过添
if(Frame.getFrames().length == 0) {
// work here.
}
(Frame
是java.awt.Frame
,它是JFrame
的父级,因此您也将捕获它们)。1)我需要知道关于窗口关闭事件的信息
有和
2) 如果任何其他窗口仍然可见。
您可以通过使用Window[]wins=Window.getWindows()获取的数量代码>用于测试其可见性或通过添加
一些重要的通知谢谢大家的回答。在这种帮助下,我设法找到了一个可行的解决方案:
奇怪的是,它不适用于windowClosed
。仅适用于窗口关闭
代码
我需要知道在窗口关闭事件中,是否还有其他窗口仍然可见。否则,将调用System.exit(0)
只需使用:
frame.dispose();
当最后一个窗口关闭时,JVM将自动退出
或者在创建框架和对话框时使用:
frame.setDefaultCloseOperation(JFrema.DISPOSE_ON_CLOSE);
“当最后一个窗口关闭时,JVM将自动退出”:只有在不与JavaWebStart一起使用并且没有非守护进程运行线程的情况下才是如此。使用Swing打开父框架的模式对话框时,您可能也会遇到问题,需要手动处理。“frame.setDefaultCloseOperation(JFrema.dispose_ON_CLOSE);”:这并不能回答OP的问题,他希望最后一个关闭的框架退出应用程序,而不仅仅是其中的任何一个。@jfpoilpret--很好的反对意见,出于偶然,我打算使用Webstart。@jfpoilpret,嗯,我刚刚更新了我的Webstart应用程序,使用“DISPOSE\u ON\u CLOSE”。当我单击“启动”按钮时,应用程序启动,并显示在Windows任务管理器上。当我单击“关闭”按钮时,它将关闭并从Windows任务管理器中删除。这不意味着JVM已经退出吗?@camickr是的,这很奇怪,也许他们已经在最近的Java插件中修复了这个bug?几年前,基里尔写了一篇很好的文章:
frame.setDefaultCloseOperation(JFrema.DISPOSE_ON_CLOSE);