2

我已经创建JDialog并设置了它setUndecorated(true)- 它没有默认的“关闭”按钮。JDialog每次按下 main 上的某个按钮时都会创建此类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按钮时。

4

1 回答 1

4

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


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

所以我想将此 JDialog 类设置为 null

您不能将一个类设置为空,只能将一个实例变量设置为空。

于 2013-08-09T13:30:30.387 回答