java 怎么终止一个线程如何优雅地终止线程 只有在框架关闭后才能运行方法?



怎么终止一个线程如何优雅地终止线程 (2)

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

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

我想refreshState方法运行一旦className对象被销毁。 所以基本上Class2是在我现有的框架上运行另一个框架的类。 我只想在新框架关闭的情况下运行该方法。 我怎样才能做到这一点?


Answer #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();
    }
}

Answer #2

所以基本上Class2是在我现有的框架上运行另一个框架的类。 我只想在新框架关闭的情况下运行该方法。 我怎样才能做到这一点?

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

伪代码:

main window code
show modal dialog
refresh state here. This will be called only after the dialog has returned.




jframe