【发布时间】:2011-10-27 05:10:36
【问题描述】:
或更准确地说:
我需要知道窗口关闭事件是否还有其他窗口可见。
如果没有,System.exit(0) 将被调用。
【问题讨论】:
标签: java swing window awt jframe
或更准确地说:
我需要知道窗口关闭事件是否还有其他窗口可见。
如果没有,System.exit(0) 将被调用。
【问题讨论】:
标签: java swing window awt jframe
1) I need to know on a window close event
2)if any other window is still visible.
您可以通过使用Window[] wins = Window.getWindows(); 测试其可见性或添加WindowStateListener 来获得Top-Level Containers 的数量
一些重要通知here
【讨论】:
试试
if(Frame.getFrames().length == 0) {
// work here.
}
(Frame 是java.awt.Frame,这是JFrame 的父级,所以你也会捕获它们)。
【讨论】:
感谢大家的回答。有了这个帮助,我设法得到了一个可行的解决方案:
奇怪,它不适用于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);
}
}
}
【讨论】:
我需要知道窗口关闭事件是否还有其他窗口可见。如果没有,System.exit(0) 会被调用。
只需使用:
frame.dispose();
当最后一个窗口关闭时,JVM会自动退出。
或者当您创建框架和对话框时使用:
frame.setDefaultCloseOperation(JFrema.DISPOSE_ON_CLOSE);
【讨论】: