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



我已经创建了JDialog并将其设置为setUndecorated(true) - 它没有默认的"关闭"按钮。每次按下主JFrame上的某个按钮时都会创建此JDialog类。此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)或鼠标单击某些JFrame/JDialog按钮时将其设置为setVisible(false)

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


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

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

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

最新更新