父視窗向子視窗註冊監聽器,子視窗關閉時觸發回調,父視窗執行刷新邏輯。
interface OnChildClosedListener { void onChildClosed(); }windowClosing / dispose) 中調用 listener.onChildClosed()。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 子視窗關閉刷新父視窗