swing子界面关闭 父界面如何捕获?
如题
子界面closed事件出发后 父界面如何知道?
[最优解释]
子界面如果是用 JDialog
有两种情况,第一种如果dialog是模态:
dialog.setModal(true);
dialog.setVisible(true);
// ...
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
// 这里调用你想要运行的逻辑
}
});
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JDialog;
import javax.swing.SwingUtilities;
/**
*
* @date 13/11/2012
*/
public class TestWindowListener implements WindowListener{
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JDialog d = new JDialog();
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
d.setSize(800, 500);
d.setLocationRelativeTo(null);
d.addWindowListener(new TestWindowListener());
d.setVisible(true);
}
});
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("windowOpened " + e);
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing " + e);
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed " + e);
}
@Override
public void windowIconified(WindowEvent e) {
System.out.println("windowIconified " + e);
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("windowDeiconified " + e);
}
@Override
public void windowActivated(WindowEvent e) {
System.out.println("windowActivated " + e);
}
@Override
public void windowDeactivated(WindowEvent e) {
System.out.println("windowDeactivated " + e);
}
}
---
run:
windowActivated java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on dialog0
windowOpened java.awt.event.WindowEvent[WINDOW_OPENED,opposite=null,oldState=0,newState=0] on dialog0
windowClosing java.awt.event.WindowEvent[WINDOW_CLOSING,opposite=null,oldState=0,newState=0] on dialog0
windowDeactivated java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on dialog0
windowClosed java.awt.event.WindowEvent[WINDOW_CLOSED,opposite=null,oldState=0,newState=0] on dialog0
windowClosed java.awt.event.WindowEvent[WINDOW_CLOSED,opposite=null,oldState=0,newState=0] on dialog0
BUILD SUCCESSFUL (total time: 3 seconds)