或更确切地说:
如果任何其他窗口仍然可见,我需要知道窗口关闭事件。
如果没有,则会调用System.exit(0)
。
答案 0 :(得分:4)
1)I need to know on a window close event
2)if any other window is still visible.
使用Window[] wins = Window.getWindows();
来测试其可见性或添加Top-Level Containers
一些重要的通知here
答案 1 :(得分:2)
尝试
if(Frame.getFrames().length == 0) {
// work here.
}
(Frame
为java.awt.Frame
,即JFrame
的父级,因此您也会捕获它们。
答案 2 :(得分:2)
感谢大家的回答。有了这个帮助,我设法找到了一个有效的解决方案:
奇怪,它不适用于windowClosed
。仅适用于windowClosing
。
public final class CloseOnLastWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("\tCLOSING!!!");
int nRelevant = 0;
for (Window w : Window.getWindows()) {
// get only visible windows, except the one being closed
if (w != e.getWindow() && w.isVisible()) {
System.out.println("\tRELEVANT: " + w);
++nRelevant;
} else {
System.out.println("\tirrelevant: " + w);
}
}
if (nRelevant == 0) {
System.out.println("\tEXIT!!!");
System.exit(0);
}
}
}
答案 3 :(得分:1)
我需要知道窗口关闭事件,如果还有其他窗口仍然可见。如果没有,将调用System.exit(0)。
只需使用:
frame.dispose();
当最后一个窗口关闭时,JVM将自动退出。
或者在创建框架和对话框时使用:
frame.setDefaultCloseOperation(JFrema.DISPOSE_ON_CLOSE);