java - setVisible(false) 后如何将 JDialog 设置为 null?

标签 java swing jdialog

我已经创建了 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)setVisible(false) 当鼠标单击一些 JFrame/JDialog 按钮。

最佳答案

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


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

So I want set this JDialog class to null

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

关于java - setVisible(false) 后如何将 JDialog 设置为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147805/

相关文章:

java - 我使用 maven test 来运行我的项目,但它说我使用的是 JDK 1.3

java - 在Camel-Kafka中创建并发Kafka消费者

java - 像在 Web 浏览器中一样为 JList 平滑滚动

java - 动态改变JDialog的宽度

java - 根据父框架 Swing JDialog 大小

java - 使异步查询同步

java - 如何从 AsyncTask 的 postExecute 方法修改 ArrayAdapter 的数据

java - java socket程序中的ArrayIndexOutOfBounds异常

java - 如何删除默认边框以及如何锚定 jtable 的列标题?

java - onToped JFrame 打开 JDialog = 对话框未覆盖 JFrame