Java 如何让父窗口捕捉到子窗口的关闭事件

在Java中,可以通过监听子窗口的关闭事件,从而让父窗口捕捉到子窗口的关闭动作。下面我们将介绍一个简单的方案,通过代码示例来演示这一过程。

项目方案

1. 创建父窗口和子窗口

首先,我们创建一个父窗口和一个子窗口,代码如下:

import javax.swing.*;

public class ParentWindow extends JFrame {

    public ParentWindow() {
        setTitle("Parent Window");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        ChildWindow childWindow = new ChildWindow(this);
        childWindow.setVisible(true);
    }

    public void childWindowClosed() {
        System.out.println("Child window has been closed.");
    }

    public static void main(String[] args) {
        new ParentWindow();
    }
}

class ChildWindow extends JFrame {

    private ParentWindow parentWindow;

    public ChildWindow(ParentWindow parentWindow) {
        this.parentWindow = parentWindow;
        setTitle("Child Window");
        setSize(200, 150);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    @Override
    public void dispose() {
        parentWindow.childWindowClosed();
        super.dispose();
    }
}

2. 监听子窗口关闭事件

在子窗口的dispose()方法中,调用父窗口的childWindowClosed()方法,以通知父窗口子窗口已关闭。父窗口可以在该方法中执行相应的操作。

流程图

flowchart TD
    A[创建父窗口] --> B[创建子窗口]
    B --> C[监听子窗口关闭事件]
    C --> D[通知父窗口子窗口已关闭]

通过以上方案,父窗口可以捕捉到子窗口的关闭事件,从而实现相应的逻辑处理。这种设计模式在Java GUI应用程序中经常被使用,能够很好地解耦父子窗口之间的关系,提高代码的灵活性和可维护性。