您可以通过窗口工具包注册接收任何类型的AWT事件子集的侦听器.从那些你可以选择和处理WindowEvents for windows打开和关闭,这样的事情:
class WindowMonitor implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
switch (event.getID()){
case WindowEvent.WINDOW_OPENED:
doSomething();
break;
case WindowEvent.WINDOW_CLOSED:
doSomethingElse();
break;
}
}
// ...
}
class MyClass {
// alternative 1
public void registerListener() {
Toolkit.getDefaultToolkit().addAWTEventListener(new WindowMonitor(),
AWTEvent.WINDOW_EVENT_MASK);
}
// alternative 2
public void registerListener(Component component) {
component.getToolkit().addAWTEventListener(new WindowMonitor(),
AWTEvent.WINDOW_EVENT_MASK);
}
}
我建议使用替代方案2,其中获取Toolkit的Component是应用程序的主框架(应该只有一个),但是如果你不必参考任何特定组件就可以使用替代方案1 (例如,在创建之前).
但请注意,注册AWTEventListener需要进行安全检查.