JDialog setVisible(false) vs dispose()

孤人 提交于 2019-11-26 16:40:24

问题


Does it make sense to use setVisible(false) on a dialog and reuse it later or is safer to call dispose() every time and to make a new JDialog. What about memory leaks with setVisible(false)?

EDIT: My Question isn't so much about quitting the application. More about Dialogs that have the main frame as parent and are opened and closed during the application life time. E.g. let's say my applications has about 10 dialogs that display different data every time I open them. Should I reuse the instances and use setVisible() or should I make a new Dialog every time and dispose() them on closing.


回答1:


I would recommend using dispose() to release resources and free up memory. If you want to show the dialog again, simply invoke setVisible(true).


It's important to note that when the last displayable window within the Java virtual machine (VM) is disposed of, the VM may terminate. See AWT Threading Issues for more information.




回答2:


I still can't see any diference between JDialog#dispose(); and JDialog.setVisible(false) more here, each of them could be wakeup for reuse, and doesn't matter if was/were Disposed or Visibled

my view is that this question must be splited to three separates areas

1) some JFrame is parent for JDialog or JWindow (exist only is is there JFrame), then last one must to turn-off the lights

2) without parent for JDialog

3) there still exist another JFrame, JDialog or JWindow, then last one must to turn-off the lights

  • reachable by using --> Window[] wins = Window.getWindows();
  • last one must to turn-off the lights --> System.exit(0);
  • I suggest that there in all of possible cases must exist visible JFrame with JFrame.EXIT_ON_CLOSE, or another way could be implements WindowsListener with System.exit(0);



回答3:


Calling dispose() frees the resources associated with the dialog. You can keep the dialog around after you dispose() it. If you are worried about having too many dialogs laying around, use a WeakReference to hold the reference. That will ensure that your dialogs you are not using only survive garbage collection as long as the space they occupy is not needed.



来源:https://stackoverflow.com/questions/7256606/jdialog-setvisiblefalse-vs-dispose

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!