在setVisible(false)之后如何设置为null JDialog?

时间:2013-08-09 13:29:24

标签: java swing jdialog

我创建了JDialog并将其设置为setUndecorated(true) - 它没有默认的“关闭”按钮。每次按下主JDialog上的某个按钮时,都会创建此JFrame类。此JDialog对话框包含“取消”按钮,其中包含MouseListener

...
public void mouseClicked(MouseEvent e) {
    setVisible(false);
    // How to set this JDialog class to null - release the resources?
}
...

所以我想将这个JDialog实例设置为null - 因为每次按下JFrame按钮都会创建新的JDialog实例 - 并且正在使用资源。我该如何解决这个问题?

修改

我发现,如果我每次在鼠标单击时创建新的JDialog然后将其设置为可见 - JDialog窗口在几毫秒内没有得到很好的验证,之后就可以了。因此,我认为更高效的是创建新的JDialog实例,然后在鼠标单击某些setVisible(true)按钮时每次设置setVisible(false)JFrame/JDialog

1 个答案:

答案 0 :(得分:4)

您可以在JDialog上调用dispose()来释放资源,尽管我听说仍然可能发生内存泄漏,尤其是在软引用和强引用方面。


请注意,您的问题中的此陈述令人困惑:

  

所以我想把这个JDialog类设置为null

您不能将类设置为null,只能设置实例变量。