swing子界面关闭 父界面如何捕获?
如题
子界面closed事件出发后 父界面如何知道?
------最佳解决方案--------------------
子界面如果是用 JDialog
有两种情况,第一种如果dialog是模态:
dialog.setModal(true);
dialog.setVisible(true);
// ...
当运行到 dialog.setVisible(true); 的时候,当前线程会被挂起,直到dialog被关闭之后才会返回,继续执行下面的代码。
另外所有的 Window 的子类都可以 addWindowListener(),而WindowListener中有一个方法是
void windowClosed(WindowEvent e) 通过这个就可以知道dialog关闭
------其他解决方案--------------------就这么多积分了 求指教
------其他解决方案--------------------
addWindowListener()是在子页面中可以监听到JDialog是否可以关闭
但是我子页面关闭后 想让父页面直接捕获到 可以么?
除了数据库和文件操作之外 父页面(panel)可以捕获到子页面(JDialog)是否关闭?
------其他解决方案--------------------
addWindowListener()
WindowListener 可以写在任何地方,任何一个类只要 implements WindowListener 就可以加进去,你要在子对话框关闭的时候在父窗体运行任何逻辑,只要在父窗体的类中定义一个内部类,implements WindowListener,然后把它加进子对话框就行了:
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
// 这里调用你想要运行的逻辑
}
});
------其他解决方案--------------------
再请教一个问题
为什么我子窗口每次关闭
public void windowClosed(WindowEvent e) {} 都会执行3次?
有什么办法能让它只执行一次?
------其他解决方案--------------------试试 void windowClosing(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);