首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Swing 子視窗關閉後刷新父視窗數據:監聽器模式實現

     編輯:程式設計疑難解答

核心思路:回調介面 / 事件監聽

父視窗向子視窗註冊監聽器,子視窗關閉時觸發回調,父視窗執行刷新邏輯。

實現步驟

  1. 定義回調介面:interface OnChildClosedListener { void onChildClosed(); }
  2. 子視窗持有介面引用,構造函數/Setter 注入。
  3. 子視窗關閉事件 (windowClosing / dispose) 中調用 listener.onChildClosed()。
  4. 父視窗實現介面,onChildClosed 內重新查詢數據並 tableModel.fireTableDataChanged() 等。

代碼骨架

// 父視窗
public class ParentFrame extends JFrame implements OnChildClosedListener {
    private void openChild() {
        ChildDialog dialog = new ChildDialog(this);
        dialog.setListener(this); // 注入自身為監聽器
        dialog.setVisible(true);
    }
    @Override
    public void onChildClosed() {
        refreshTableData(); // 刷新邏輯
    }
}

// 子視窗
public class ChildDialog extends JDialog {
    private OnChildClosedListener listener;
    public void setListener(OnChildClosedListener l) { this.listener = l; }
    private void initCloseOperation() {
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosed(WindowEvent e) {
                if (listener != null) listener.onChildClosed();
            }
        });
    }
}

參考資源

CSDN 詳細教程:Swing 子視窗關閉刷新父視窗

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved