JDialog setVisible(false) vs dispose()

2022-09-01 23:18:45

在对话框中使用 setVisible(false) 并在以后重用它是否有意义,或者每次调用 dispose() 并创建一个新的 JDialog 更安全。使用 setVisible(false) 的内存泄漏情况如何?

编辑:我的问题并不是关于退出应用程序。有关以主框架为父级并在应用程序生存期内打开和关闭的对话的详细信息。例如,假设我的应用程序有大约10个对话框,每次打开它们时都会显示不同的数据。我应该重用这些实例并使用 setVisible() 还是应该每次都创建一个新的对话框,并在关闭时释放() 它们。


答案 1

我建议使用 dispose() 来释放资源并释放内存。如果要再次显示对话框,只需调用 。setVisible(true)


请务必注意,当 Java 虚拟机 (VM) 中的最后一个可显示窗口被释放时,VM 可能会终止。有关详细信息,请参阅 AWT 线程问题


答案 2

我仍然看不到任何差异,在这里还有更多,它们中的每一个都可以被唤醒以重用,并且无论是否被处置或可见都无关紧要between JDialog#dispose();JDialog.setVisible(false)

我的观点是,这个问题必须分为三个独立的领域。

1)有的为父母或(),那么最后一个必须关灯JFrameJDialogJWindowexist only is is there JFrame

2) 不带父项的 JDialog

3)还有另外一个,那么最后一个必须关灯JFrame, JDialog or JWindow

  • 可使用 -->Window[] wins = Window.getWindows();
  • 最后一个必须关灯 - >System.exit(0);
  • 我建议在所有可能的情况下都必须存在可见的,或者另一种方式可以实现JFrameJFrame.EXIT_ON_CLOSEWindowsListenerSystem.exit(0);

推荐