2013-03-23 44 views
4

所以,我的代码现在看起来是这样的:如何仅在框架关闭后运行方法?

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

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

回答

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. 
+0

好,这可以工作,但问题是'Class2'本身就是一个完整的程序!它的工作不能被JDialog替代。 – 2013-03-23 03:11:50

+0

@ user2059238:我的回答仍然正确,您的问题是您的依赖窗口类是错误地创建的。你永远不应该创建一个扩展JFrame的类,这样你就可以避免这个问题。创建JPanels,然后您可以将它们放入对话框或JFrame中或当时需要的任何内容中。您需要重新编写该代码。 – 2013-03-23 03:15:39

+0

好的。似乎有点工作。我会尝试并报告回来! – 2013-03-23 03:20:38

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(); 
    } 
} 
+0

不知道为什么,但这段代码不适用于我。我肯定了'getFrame()',但是get方法addWindowsListener(new WindowAdapter(){})未定义为类型JFrame' – 2013-03-24 15:28:20

相关问题