4

所以,我的代码现在看起来像这样:

Class2 className = new Class2(param1, param2);
className = null;
if (Class2 == null) {
    refreshState();
}

我希望该refreshState方法在className对象被销毁后运行。所以基本上Class2是一个在我现有框架之上运行另一个框架的类。我希望该方法仅在新框架关闭时运行。我怎样才能做到这一点?

4

2 回答 2

3

所以基本上 Class2 是一个在我现有框架之上运行另一个框架的类。我希望该方法仅在新框架关闭时运行。我怎样才能做到这一点?

更好的解决方案是使用模态对话框,例如 JOptionPane 或模态 JDialog。这将停止处理主窗口中的 Swing 代码,直到对话框窗口被处理并且不再可见。然后您的 refreshState 可以在对话框关闭后立即运行:

伪代码:

main window code
show modal dialog
refresh state here. This will be called only after the dialog has returned.
于 2013-03-23T02:50:48.503 回答
1

我会说在框架中添加一个 java.awt.event.WindowListener:

class2.getFrame().addWindowsListener(new WindowAdapter() {
    public void windowClosed(WindowEvent we) {
        // The frame is closed, let's dot something else
        refreshState();
    }
}
于 2013-03-23T09:29:50.447 回答